C语言编程题目与答案
选择题
题目 1: 交换两个变量内容
有以下程序:
#include <stdio.h>
int main() {
int m = 1, n = 2, *p = &m, *q = &n, *r;
r = p; p = q; q = r;
printf("%d,%d,%d,%d\n", m, n, *p, *q);
return 0;
}
程序运行后的结果是 ( )。
A) 1,2,1,2
B) 2,1,1,2
C) 2,1,2,1
D) 1,2,2,1
答案: C) 2,1,2,1
题目 2: 变量 y 的值
执行以下程序后,变量 y 的值为 ( )。
#include <stdio.h>
int main() {
int a[] = {2, 4, 6, 8, 10};
int y = 1, x, *p;
p = &a[1];
for (x = 0; x < 3; x++)
y += *(p + x);
printf("%d\n", y);
return 0;
}
答案: 19
编程题
题目1 :swap
#include <stdio.h>
void swap(int *a,int *b);
int main() {
int m, n;
/* Input */
scanf("%d%d", &m, &n);
/* Calculate */
swap(&m, &n);
/* Output */
printf("m=%d,n=%d\n", m, n);
return 0;
}
/* 你的代码将被嵌在这里 */
void swap(int *a,int *b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}
题目 2: 计算 n 个整数的和及平均值
输入 n
( n <= 100
)个整数,编程计算 n
个整数的和以及平均分。要求设计一个函数:
double fun(int *a, int n, int *sum);
该函数的功能是计算由指针 a
指向的一维数组中 n
个元素的和以及平均分,该函数返回平均分,和由指针变量 sum
返回。
裁判测试程序样例:
#include <stdio.h>
double fun(int *a, int n, int *sum);
int main() {
int score[100], n, i, sum;
double average;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &score[i]);
average = fun(score, n, &sum);
printf("sum=%d\n", sum);
printf("average=%.3lf\n", average);
return 0;
}
输入:
输入正整数 n
;输入 n
个整数。
输出:
输出 n
个整数之和以及平均分(结果保留小数点后边3位数字)。
输入输出示例:
输入:
10
1 2 3 4 5 6 7 8 9 10
输出:
sum=55
average=5.500
答案:
#include <stdio.h>
double fun(int *a, int n, int *sum);
int main() {
int score[100], n, i, sum;
double average;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &score[i]);
average = fun(score, n, &sum);
printf("sum=%d\n", sum);
printf("average=%.3lf\n", average);
return 0;
}
double fun(int *a, int n, int *sum) {
int s = 0;
int i;
for(i = 0; i < n; i++) {
s += a[i];
}
*sum = s;
return (double)s / n;
}
题目 3: 在字符串中查找指定的字符
输入一个字符串 s
,再输入一个字符 c
,然后在字符串 s
中查找字符 c
。如果找不到,则输出“Not found”,若找到,则输出字符串 s
中从 c
开始的所有字符。要求设计一个函数:
char *fun(char *s, char c);
该函数的功能是在 s
指向的字符串中查找字符 c
。若在字符串中找到首次出现的字符 c
,则返回字符串中该字符的地址,若在字符串中找不到字符 c
,则返回空指针 NULL。
裁判测试程序样例:
#include <stdio.h>
#include <string.h>
char *fun(char *s, char c);
int main() {
char str[100], c, *p;
gets(str);
c = getchar();
p = fun(str, c);
if(p == NULL)
puts("Not found");
else
puts(p);
return 0;
}
输入:
输入一个字符串 s
;输入一个字符 c
。
输出:
输出字符串 s
中从 c
开始的所有字符。
输入输出示例:
输入:
abcdef
d
输出:
def
答案:
#include <stdio.h>
#include <string.h>
char *fun(char *s, char c) {
while (*s) {
if (*s == c) {
return s;
}
s++;
}
return NULL;
}
int main() {
char str[100], c, *p;
gets(str);
c = getchar();
p = fun(str, c);
if (p == NULL)
puts("Not found");
else
puts(p);
return 0;
}