由于小雅兰的C语言程序设计考试的时间实在是越来越近了,那么,这篇博客也就产生了,这篇博客的主要内容是一些C语言程序设计的练习题,现在,就让我们一起进入C语言的世界吧。

1.函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新数,作为函数值返回。例如,从主函数输入一个整数27638496,则函数返回值为26846.

#includeunsigned long fun(unsigned long n){ unsigned long x=0; unsigned long i=0; unsigned long s=0; int t=0; s=n; i=1; while(s>0) { t=s%10; if(t%2==0) {x=x+t*i;i=i*10; } s=s/10; } return x;}int main(){ unsigned long n=-1; while(n>99999999||n<0) {printf("Please input(0<n<100000000):");scanf("%ld",&n); } printf("\nThe result is:%d\n",fun(n));}

2.功能:下面的程序是求1!+3!+5!+……+n!的和。

#includeint main(){longintf=0;long int s=0;//求和inti=0;int j=0;int n=0;//输入的数的个数scanf("%d",&n);for(i=1;i<=n;i+=2){f=1;for(j=1;j<=i;j++){ f=f*j; }s=s+f;}printf("n=%d,s=%ld\n",n,s);}

3.功能:以下程序是用选择法对10个整数按升序排序。

#include#define N 10int main(){int i = 0;int j = 0;int k = 0;int t = 0;int a[N] = { 0 };//数组元素为10的一维数组for (i = 0; i < N; i++){scanf("%d", &a[i]);}for (i = 0; i < N - 1; i++){k = i;for (j = i + 1; j < N; j++){if (a[j] < a[k]){k = j;}}if (k!=i){t = a[i];a[i] = a[k];a[k] = t;}}printf("outputthesortedarray:\n");for (i = 0; i < N; i++){printf("%5d", a[i]);}printf("\n");}

4.功能:求100-999之间的水仙花数
说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。
例如:153=1^3+5^3+3^3)。

#includeint fun(int n){int i = 0;int j = 0;int k = 0;int m = 0;m = n;for (i = 1; i < 4; i++){j = m % 10;m = (m - j) / 10;k = k + j * j * j;}if (k == n)return(1);elsereturn(0);}int main(){int i = 0;for (i = 100; i < 1000; i++){if (fun(i) == 1){printf("%d是水仙花数!\n", i);}}}

5.功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。

#includeint main(){int m = 0;int n = 0;int k = 0;int i = 0;for (m = 100; m  0);if (k % 15 == 0){printf("%5d", m); i++;if (i % 10 == 0)//输出时每10个一行{printf("\n");}}}}

6.功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。

#include#includeint fun(int k){int m = 0;int mc = 0;//题目要求500以内最大的10个while(k >= 2 && mc < 10 ){if(k % 13 == 0 ||k % 17 == 0 ){m = m + k;mc++;}k--;}return m;}int main(){printf("%d\n", fun(500));}

7.题目:计算100-1000之间有多少个数,其各位数字之和是5.

#includeint main(){int i = 0;int s = 0; int k = 0;int count = 0;for (i = 100; i  0 ){s = s + k % 10;k = k / 10;}if (s != 5)continue;else{count++;printf("%d ", i);}}printf("\n个数为:%d\n", count);return 0;}

8.功能:输入整数a和b,交换a和b后输出。

#includeint main(){int a = 0;int b = 0;int temp = 0;printf("输入整数a,b:");scanf("%d%d",&a,&b);temp = a;a = b;b = temp;printf("a=%d,b=%d\n", a, b);return 0;}

10.功能:从键盘输入一个大写字母赋给c1,要求改用小写字母输出。

#includeint main(){char c1 = 0;char c2 = 0;c1 = getchar();c2 = c1 + 32;printf("%c %c", c1, c2);return 0;}

11.题目:以下程序求100~200之内的素数。

#include#includevoid sushu(int m){int k = 0;int i = 0;k = (int)sqrt(m);for (i = 2; i = k + 1){printf("%4d", m);}}int main(){int m = 0;for (m = 100; m < 200; m++){sushu(m);}return 0;}

12.题目:下列程序的功能为:输出100以内能被4整除且个位数为8的所有整数;请填写适当的符号或语句,使程序实现其功能。

#includeint main(){int i = 0;int j = 0;for (i = 0; i < 10 ; i++){j = i * 10 + 8;if (j % 4 == 0){continue;}printf("%d ", j);}return 0;}

13.题目:以下程序按每行5个数的格式输出1至n范围内能被7或17整除的整数,并求出其和。

如输入:50则输出:

714172128

34354249

Sum=247

#includeint main(){int i = 0;int n = 0;int ct = 0;int sum = 0;scanf("%d", &n);for (i = 1; i <= n; i++){if ((i % 7 == 0) || (i % 17 == 0)){printf("%d\t", i);sum += i;ct++;if (ct % 5 == 0)//每5个输出一行{printf("\n");}}}printf("\nsum=%d\n", sum);return 0;}

14.题目:以下程序的功能是:输出a、b、c三个变量中的最小值。

#define _CRT_SECURE_NO_WARNINGS 1#includeint main(){int a = 0;int b = 0;int c = 0;int t1 = 0;int t2 = 0;scanf("%d %d %d", &a, &b, &c);t1 = a < b ? a : b;t2 = c < t1 ? c : t1;printf("%d\n", t2);return 0;}

15.功能:调用函数fun计算m=1-2+3-4+……+9-10,并输出结果。

#includeint fun(int n){int m = 0;int f = 1;int i = 0;for (i = 1; i <= n ; i++){m += f * i;f = -f;}return m;}int main(){printf("m=%d\n", fun(10));}

16.功能:将一个数组中的元素按逆序存放。

#include#define N7int main(){static int a[N] = { 12,9,16,5,7,2,1 };int k = 0;int s = 0;printf("\n原来的数组为:\n");for(k = 0; k < N; k++){printf("%4d", a[k]);}for(k = 0; k < N / 2; k++ ){s = a[k];a[k] = a[N - k - 1];a[N - k - 1] = s;}printf("\n逆序的数组为:\n");for (k = 0; k < N; k++){printf("%4d", a[k]);}return 0;}

17.求一个二维数组中每行的最大值和每行的和。

#includeint main(){int a[5][5];int b[5];int c[5];int i = 0;int j = 0;int k = 0;int s = 0;for (i = 0; i < 5; i++){for (j = 0; j < 5; j++){scanf("%d", &a[i][j]);}}for (i = 0; i < 5; i++){k = a[i][0];s = 0;for (j = 0; j < 5; j++){if (k < a[i][j]){k = a[i][j];}s = s + a[i][j];}b[i] = k;c[i] = s;}for (i = 0; i < 5; i++){for (j = 0; j < 5; j++){printf("%5d", a[i][j]);}printf("%5d %5d", b[i], c[i]);printf("\n");}return 0;}

18.功能:统计一个字符串中的字母、数字、空格和其它字符的个数。

#includevoid fun(char s[], int b[]){int i = 0;for(i = 0; s[i] != '\0'; i++){if('a' <= s[i] && s[i] <= 'z' || 'A' <= s[i] && s[i] <= 'Z'){b[0]++;}else if ('0' <= s[i] && s[i] <= '9'){b[1]++;}else if(s[i] == ''){b[2]++;}else{b[3]++;}}}int main(){char s1[80]; int a[4] = { 0 };int k = 0;gets(s1);fun(s1, a);puts(s1);for (k = 0; k < 4; k++){printf("%4d", a[k]);}}

19.说明:下面程序的功能是将一个字符串str的内容颠倒过来。。

#include#includeint main(){int i = 0;int j = 0;int k = 0;char str[] = "1234567";for (i = 0, j = strlen(str); i < j; i++, j--){k = str[i];str[i] = str[j - 1];str[j - 1] = k;}puts(str);}

20.说明:下面程序的功能是输出数组s中最大值元素的下标。

#includeint main(){int k = 0;int p = 0;int s[] = { 1,9,7,2,10,3 };for (p = 0, k = p; p  s[k]){k = p;}}printf("%d\n", k);}

21.功能:编写程序,输出1000以内的所有完数及其因子。

说明:所谓完数是指一个整数的值等于它的因子之和。

例如“6的因子是1、2、3,而6=1+2+3,故6是一个完数。

#includeint main(){int i = 0;int j = 0;int m = 0;int s = 0;int k = 0;int a[100];for (i = 1; i<=1000; i++){m = i;s = 0;k = 0;for (j = 1; j < m; j++){if (m % j == 0){s = s + j;a[k++] = j;}}if (s != 0 && s == m){for (j = 0; j < k; j++){printf("%4d", a[j]);}printf("=%4d\n", i);}}}

22.功能:输出Fibonacci数列的前15项,要求每行输出5项。Fibonacci数列:1,1,2,3,5,8,13………..

#includeint main(){int fib[15];int i;fib[0] = 1;fib[1] = 1;for (i = 2; i < 15; i++){fib[i] = fib[i - 1] + fib[i - 2];}for (i = 0; i < 15; i++){printf("%d\t", fib[i]);if (i % 5 == 4){printf("\n");}}}

23.题目:求出1~1000以内前20个不能被2,3,5,7整除的数之和。

#includeint main(){int i = 0;int j = 0;int a[20];int sum = 0;// 前20个不能被2, 3, 5, 7整除的数保存在a数组中,它们的和保存在sum中。for (i = 0; i  19)break;}for (i = 0; i < 20; i++){sum += a[i];}printf("和为:%d\n", sum);}

24.题目:求出1~5000以内前5个能被3,5,11整除的数之和。

#includeint main(){int i = 0;int j = 0;int a[5];int sum = 0; //前5个能被3,5,11整除的数保存在a数组中,它们的和保存在sum中。for (i = 1; i  4)break;}for (i = 0; i < 5; i++){sum += a[i];}printf("和为:%d\n", sum);}

25.题目:求出1~1000以内前5个能被3,5,11整除的数之和。

#includeint main(){int i = 0;int j = 0;int a[5];int sum = 0; //前5个能被3,5,11整除的数保存在a数组中,它们的和保存在sum中。for (i = 1; i  4) break;}for (i = 0; i < 5; i++){sum += a[i];}printf("和为:%d\n", sum);}

26.题目:求出1~1000以内前5个能被2,3,5整除但不能被11整除的数之和。

#includeint main(){int i = 0;int j = 0;int a[5];int sum = 0; //前5个能被2,3,5整除但不能被11整除的数保存在a数组中,它们的和保存在sum中。for (i = 1; i  4)break;}for (i = 0; i < 5; i++){sum += a[i];}printf("和为:%d\n", sum);}

27.题目:用循环编写程序求1-3+5-7+-99+101的值

#includeint main(){int i=0;int s = 0;int f = 1;//i定义为循环变量,s为1-3+5-7+…-99+101的值for (i = 1; i <= 101; i += 2){s = s + i * f;f = -f;}printf("%d", s);}

28.题目:写程序从键盘输入一个整数n,用循环求1+4+9+16+……+n*n的值

#includeint main(){int i = 0;int s = 0;int n = 0;//i定义为循环变量,s为1+4+9+16+……+n*n的值scanf("%d", &n);for (i = 1; i <= n; i++){s = s + i * i;}printf("%d", s);return 0;}

29.功能:编写函数fun1!+2!+3!+ ……+n!的和,main数中给n赋值,并输出运算结果。请编写fun函数。
例如:若n值为5,则结果为153

#includelong int fun(int n){int i = 0;long int f = 1;int s = 0;for (i = 1; i <= n; i++){f = f * i;s = s + f;}return s;}int main(){int n = 0;long int result = 0;n = 5;result = fun(n);printf("%ld\n", result);return 0;}

30.功能:编写函数fun1*2+2*3+3*4+ ……+n*(n+1)的和,main数中由键盘输入n值,并输出运算结果。请编写fun函数。

#includelong int fun(int n){int i = 0;long int s = 0;for (i = 1; i <= n; i++){s = s + i * (i + 1);}return s;}int main(){int n = 0;long int result = 0;n = 12;result = fun(n);printf("%ld\n", result);return 0;}

31.功能:功能:编写函数fun1/2-2/3+3/4- ……+99/100的和,main数中调用fun函数送入参数值100,并输出运算结果。请编写fun函数。

#includefloat fun(int n){int i = 0;float f = 1;float s = 0;for (i = 1; i <= 99; i++){s = s + f * i / (i + 1);f = -f;}return s;}int main(){int n = 0;float result=0.00;result = fun(100);printf("%.2f\n", result);return 0;}

32.题目:试编写程序,用循环从键盘输入某门课5名学生的成绩,并求出这5个学生成绩的平均分avg

#include int main(){float a[5];int avg = 0;int i = 0;int j = 0;printf("请输入5名学生的成绩\n");for (i = 0; i < 5; i++){scanf("%f", &a[i]);avg = avg + a[i];}avg = avg / 5;printf("平均分=%f\n", avg);return 0;}

33.题目:试编写程序,用循环从键盘输入某门课5名学生的成绩,并求出这5个学生成绩的最高分max

#include int main(){float a[5];float max;int i = 0;int j = 0;printf("请输入5名学生的成绩\n");for (i = 0; i < 5; i++){scanf("%f", &a[i]);}max = a[0];for (i = 1; i  max){max = a[i];}}printf("最高分=%f\n", max);return 0;}

34.题目:试编写程序,用循环从键盘输入某门课5名学生的成绩,并求出这5个学生成绩的最低分min

#include int main(){float a[5];int min = 0;int i = 0;printf("请输入5名学生的成绩\n");for (i = 0; i < 5; i++){scanf("%f", &a[i]);}min = a[0];for (i = 1; i < 5; i++){if (a[i] < min){min = a[i];}}printf("最低分=%f\n", min);return 0;}

35.题目:试编写程序,用循环从键盘输入某门课5名学生的成绩,并求出这5个学生中成绩在60以上(含60)的人数count

#include int main(){float a[5];int i = 0;int count = 0;printf("请输入5名学生的成绩\n");for (i = 0; i = 60)count++;}printf("分数在60以上的人数有%d人\n", count);return 0;}

36.题目:试编写程序,用循环从键盘输入某门课5名学生的成绩,并求出这5个学生中成绩在60以下(不含60)的人数count

#include int main(){float a[5];int i = 0;int count = 0;printf("请输入5名学生的成绩\n");for (i = 0; i < 5; i++){scanf("%f", &a[i]);if (a[i] < 60)count++;}printf("分数在60以下的人数有%d人\n", count);return 0;}

37.题目:编写函数对数组中的10个整数进行排序。

#include//fun函数功能:对数组中的n个整数进行排序void fun(int a[], int n){int i = 0;int j = 0;int t = 0;for (i = 0; i < n - 1; i++){for (j = 0; j  a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}}int main(){int a[10];int i = 0;printf("请输入10个整数");for (i = 0; i < 10; i++){scanf("%d", &a[i]);}fun(a, 10);printf("排序后的数组为:");for (i = 0; i < 10; i++){printf("%d,", a[i]);}putchar('\n');return 0;}

38.题目:编写函数对数组中的n个整数进行逆序排列。

#include//fun函数功能:对数组中的n个整数进行排序void fun(int a[], int n){int i = 0;int j = 0;int t = 0;for (i = 0; i < n - 1; i++){for (j = 0; j < n - i - 1; j++){if (a[j] < a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}}void main(){int a[10];int i = 0;printf("请输入10个整数");for (i = 0; i < 10; i++){scanf("%d", &a[i]);}fun(a, 10);printf("排序后的数组为:");for (i = 0; i < 10; i++){printf("%d,", a[i]);}putchar('\n');return 0;}

39.题目:编写函数对n个职工的工资进行排序。

#include//fun函数功能:对数组中的n个浮点型数进行排序void fun(float a[], int n){int i = 0;int j = 0;float t;for (i = 0; i < n - 1; i++){for (j = 0; j  a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}}int main(){float a[10];int i;printf("请输入10个职工的工资");for (i = 0; i < 10; i++){scanf("%f", &a[i]);}fun(a, 10);printf("排序后的工资为:");for (i = 0; i < 10; i++){printf("%f,", a[i]);}putchar('\n');return 0;}

40.题目:编写函数对字符串中n个字符按照ASCII码值排序。

#include#include//fun函数功能:对字符串中的字符进行排序void fun(char a[]){int i = 0;int j = 0;int n = strlen(a);char t;for (i = 0; i < n - 1; i++){for (j = 0; j  a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}}int main(){char a[20];int i;printf("请输入一个字符串");gets(a);fun(a);printf("排序后的字符串为:");puts(a);return 0;}

41.题目:编写函数对字符串中n个字符按照ASCII码值逆序排列。

#include#include//fun函数功能:对字符串中的字符进行逆序排列void fun(char a[]){int i = 0;int j = 0;int n = strlen(a);char t;for (i = 0; i < n - 1; i++){for (j = 0; j < n - i - 1; j++){if (a[j] < a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}}int main(){char a[20];int i;printf("请输入一个字符串");gets(a);fun(a);printf("排序后的字符串为:");puts(a);return 0;}

42.给出年、月、日,计算该日是该年的第几天。

#includeint main(){int sum_day(int month, int day);int leap(int year);int year, month, day, days;printf("input date(year,month,day):");scanf("%d,%d,%d", &year, &month, &day);printf("%d/%d/%d", year, month, day);days = sum_day(month, day);/*调用函数sum_day*/if (leap(year) && month >= 3)/*调用函数leap*/days = days + 1;printf("isthe%dthdayinthisyear.\n", days);return 0;}int sum_day(int month, int day)/*函数sum_day:计算日期*/{int day_tab[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };int i;for(i = 1; i < month; i++)day += day_tab[i];/*累加所在月之前天数*/return(day);}int leap(int year)/*函数leap:判断是否为闰年*/{int leap;leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;return(leap);}

43.求一个3*3的整型矩阵对角线元素之和。

#includeint main(){int a[3][3];int i = 0;int j = 0;int s = 0;for (i = 0; i <= 2; i++){for (j = 0; j <= 2; j++){scanf("%d", &a[i][j]);if ((i == j) || (i + j == 2)){s = s + a[i][j];}}}printf("%d\n", s);return 0;}

44.有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。

#includeint main(){int i = 0;int j = 0;int upp = 0;int low = 0;int dig = 0;int spa = 0;int oth = 0;char text[3][80];for (i = 0; i < 3; i++){printf("please input line %d:\n", i + 1);gets(text[i]);for (j = 0; j = 'A' && text[i][j] = 'a' && text[i][j] = '0' && text[i][j] <= '9')dig++;else if (text[i][j] == '')spa++;elseoth++;}}printf("\nuppercase:%d\n", upp);printf("lowercase:%d\n", low);printf("digitcase:%d\n", dig);printf("spacecase:%d\n", spa);printf("othercase:%d\n", oth);return 0;}

好啦,小雅兰的C语言题库就到这里了,考试加油呀!!!