C语言上机考试题
C语言上机考试题

考试时间120分钟题目中所有要求统计或输出的地方都要用printf函数输出相关内容要求:新建一个以自己中文姓名命名的文件夹,将如下题目的答案保存在该文件夹中,各题命名要求Exam1.c,Exam2.c,Exam3.c,Exam4.c,Exam5.c只需提交每个题目的源文件1.定义一个字符数组s[50],从键盘输入如下字符串给s数组中,统计其中数字字符的个数和英文字母的个数以及特殊字符的个数。
(要求:输入的字符为:“123ABCDhijkop#&%*&!”)(本题5分)输入功能,3个统计2.从键盘输入10个元素给数组a,然后将这些元素逆向复制到数组b中(要求:输入的这10个数为:1,2,3,4,5,6,7,8,9,10)。
(本题5分)输入,逆序2个功能,错一个扣2分3.使用循环嵌套,打印输出如下图形结果(提示使用两次循环嵌套)。
(本题5分)没有中文后面扣1分实现一半扣2分4.从键盘上输入一个字符,如果是’M’,输出Mondey,’T’输出Tuesday,’W’输出Wednesday,’R’输出Tursday,’F’输出Friday,’S’输出Saturday,’U’输出Sunday,否则输出Error(本题5分)输入字符,switch语句,细节有错扣0.55.从键盘上输入10个学生的数学成绩,使用冒泡排序实现对成绩的排序功能(排序后的成绩按从低到高排列,效果如下),输出排序后的学生成绩,输出最高成绩,输出最低成绩,将55-60之间的成绩(含55,不含60)修改为60,并统计被修改的成绩个数,统计及格人数,统计95(含95,优秀)分以上的学生成绩人数,输出及格率和优秀率(>=60,及格,>=95优秀)。
(要求:输入的10个成绩分别为:60,56,88,43,57,99,97,52,58,59)(本题10分)排序,最高,最低,修改个数,及格,优秀,及格率,优秀率错一个扣1分小提示(冒泡排序从低到高排序与从高到底的实现方法基本完全一样,输出最高成绩,输出最低成绩,可以不再编写代码,排序后的第一个和最后一个即为两者)。
C语言上机题参考答案

20、设有1<=n<=500个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进
行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的
报数,如此进行下去直到所有的人都出圈为止。
要求按出圈次序输出编号。
输入格式如下:
n s m
示例:
输入:
6 1 3
输出:
3 6 4 2 5 1
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
8、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
if(x>1) y=6*x+5;
printf("%d",y);
}
三、循环图形
7、编程输出n行图形(n值通过键盘输入)
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
******
#include<stdio.h>
void main()
{int i,j,n;
printf("%.2f\n",(a+b+c)/3.0);
7-22-C语言上机考试试题15

C 语言上机考试试题-151. 选择题(评分标准20 分,每小题2分)1、一个C程序的执行是从。
A) 本程序的main函数开始,到main 函数结束B) 本程序文件的第一个函数开始,到本程序的最后一个函数结束C) 本程序的main函数开始,到本程序的最后一个函数结束D) 本程序文件的第一个函数开始,到main 函数结束2、以下叙述中不正确的是。
A) 一个C源程序可以由一个或多个函数组成B) C程序的基本组成单位是函数C) 在C程序中,注释只能位于一条语句的后面D) 一个C程序必须包含一个主函数3、假设所有的变量都是int 型,则表达式(a=2,b=5,b++,a+b)的值是。
A) 7 B) 8 C) 6 D) 24、判断char 型变量ch 中的字符是否为大写字母的正确表达式是。
A) 'A' <= ch <='Z' B) ('A' <= ch) && (ch <= 'Z')C) ('A' <= ch) & (ch <='Z') D) ('A' <= ch) AND (ch <= 'Z')5、C语言中while 和do-while 循环的主要区别是。
A) do-while的循环体至少无条件执行一次B) while的循环控制条件比do-while 的严格C) do-while允许从该语句的外部跳转到循环体内D) do-while的循环体不能是复合语句6、若有说明int a[10],则对a 数组元素的正确引用是。
A) a[10] B) a[-1] C) a(5) D) a[10-5]7、下面程序中有错误的行是。
(每行最前面的数字代表行号)1main()2{3int a[3] = {1,2};4int j;5scanf(“%d”,&a);6for (j=0; j<3; j++) a[0] = a[0] +a[j];7printf(“a[0]=%d\n”,a[0]);8}A) 3 B) 6 C) 7 D) 58、对以下语句的正确理解是。
c语言上机考试训练题库及答案

7、编写程序,输入12个数,按照从后向前的顺序依次找出并输出其中能被7
整除的所有整数以及这些整数的和,在屏幕上输出
8.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
编写程序提示用户从键盘输入一个double类型的数使该数保留小数点后两位对第三位小数进行四舍五入处理然后在显示器上输出此数以便验证处理是否正确
上机考试习题集
1.编写程序,一次输入5个学生的3门课成绩,每输入一个学生的3门成绩后,立即统计并输出该学生的总分和平均分。
#include "stdio.h"
void main ()
{
int i,s,min,max,t,sum;
min=999; sum=0; max=0;
i=100;
while (i<=999)
{ s=i%100/10;
if ((i%4==0)&&s!=4)
{
if (i<min) min=i;
if (i>max) max=i;
sum+=i;
{
if(ch[i]>='A'&&ch[i]<='Z'||ch[i]>='a'&&ch[i]<='z')l++;
else
{
if(ch[i]>='0'&&ch[i]<='9') s++;
C语言理论上机考试选择题部分附答案

C 语言理论上机考试选择题部分附答案
A) float B) char C) int D) double 40、一个 C 语言的执行是从_____A______. A) 本程序的主函数开始,到本程序的主函 数结束 B) 本程序的第一个函数开始,到本程序的 最后一个函数结束 C) 本程序的主函数开始,到本程序的最后 一个函数结束 D) 本程序的第一个函数开始,到本程序的 主函数结束 41、设 a 为整型变量,不能正确表达数学关 系 10<a<15 的 c 语言表达式是____a____.< p=""> A) 10<a<="" p=""> a==11||a==12||a==13||a==14 C) a>10&&a<15 D) !(a<=10)&&!(a>=15) 42、下列程序执行后的输出结果是 _____C____. #include <> void main( ) { int a=5,b=60,c; if (a<b)< p=""> {c=a*b;printf("%d*%d=%d\n",b,a,c);}
则表达式:(x+y)%2+(int)a/(int)b 的值是 __D__. A) 0 B) 2 C) D) 1 37、在 C 语言中,以下叙述不正确的是 _____A____. A) 在 C 程序中,无论是整数还是实数,都能被准确无误的表示 B) 在 C 程序中,变量名代表存储器中的一 个位置 C) 静态变量的生存期与整个程序的生存期 相同 D) C 语言中变量必须先定义后引用 38、C 语言中的变量名只能由字母,数字和 下划线三种字符组成,且第一个字符 ____C____. A) 必须为字母 B) 必须为下划线 C) 必须为字母或下划线 D) 可以是字母,数字或下划线中的任意一 种 39、设有说明:char w; int x; float y; double z; 则表达式: w*x+z-y 值的数据类 型是___D____.
c语言一维数组上机考试题目

c语言一维数组上机考试题目
以下是一些关于C语言一维数组的常见上机考试题目:
1. 编写一个程序,输入一个整数n,求出1到n之间所有偶数的和。
2. 编写一个程序,输入一个整数n,求出1到n之间所有数字的阶乘之和。
3. 编写一个程序,输入一个整数n,求出1到n之间所有数字的立方之和。
4. 编写一个程序,输入一个整数n,求出1到n之间所有数字的平方之和。
5. 编写一个程序,输入一个整数n,求出1到n之间所有数字的倒数之和。
6. 编写一个程序,输入一个整数n,求出1到n之间所有数字的绝对值之和。
7. 编写一个程序,输入一个整数n,求出1到n之间所有数字的因子之和。
8. 编写一个程序,输入一个整数n,求出1到n之间所有数字的质因子之和。
9. 编写一个程序,输入一个整数n,求出1到n之间所有数字的奇数因子之和。
10. 编写一个程序,输入一个整数n,求出1到n之间所有数字的因子个数之和。
以上题目只是示例,实际上关于C语言一维数组的上机考试题目还有很多其他类型。
考生应该掌握一维数组的基本概念和操作,并且能够灵活运用数组来解决问题。
江苏省二级c语言上机考试例题集1-20
1、取出一个十进制正整数中的所以奇数数字,用这些数字构成一个最小数。
#include<stdio.h>#include<stdlib.h>void sort(int a[], int n){int i, j, t;for (i = 0;i < n - 1;i++)for (j = 0;j < n - 1 - i;j++) /*利用双重循环,将数组按从小到大排列*/if (a[j] > a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t; }}long arrange(long s) /*arrange函数的功能是取出十进制整数s中的所有奇数数字,用这些数字构成一个最小数,函数返回该数*/{ int d, b[10], i, j = 0;long s1 = 0;while (s > 0) /*利用循环对s数位分离,分离出个位、十位、百位等各位上的数*/{ d = s % 10;if (d % 2 != 0) /*判断每一位上的数字是否为奇数*/b[j++] = d; /*若为奇数则存放到b数组中*/s /= 10;}sort(b, j); /*调用sort函数,将数组b从小到大排列*/for (i = 0;i < j;i++)s1 = s1 * 10 + b[i]; /*求得用各位上的奇数组成的最小数 */return s1; /*返回求得的数*/}void main(){long m, n;FILE *fp; /*定义文件指针fp*/if ((fp = fopen("myf2.out", "w")) == NULL) /*涉及文件的打开*/{printf("The file can not open!");exit(0);}scanf("%ld", &n); /*接收键盘输入的整型数据*/m = arrange(n); /*键盘输入的数据作为实参调用arrange 函数*/printf("%ld\n", m); /*将得到的最小数输出到屏幕及结果文件中*/fprintf(fp, "%ld\n", m);printf("\nMy exam number is:WLJY001\n"); /**/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}2、按要求合并两个字符串#include<stdio.h>#include<string.h>#include<stdlib.h>void fun(char *a, char *b, char *c) /*函数功能是先将b指向的字符串逆序存放,然后按a[0] ,b[0], a[1], b[1]…的顺序合并a字符串和b字符串到c指向的数组中,将a 或b中剩余的字符拼接在c数组的尾部*/{int i, j;char ch;i = 0;j = strlen(b) - 1;while (i < j) /*利用while循环将数组b中的字符逆序存放*/{ch = b[i];b[i] = b[j];b[j] = ch;i++;j--;}while (*a || *b) /*利用while循环,通过判断*a || *b,将a、b数组间隔存放在c数组中*/{ if (*a){*c = *a;c++;a++;}if (*b){*c = *b;c++;b++;}}*c = '\0';}void main(){FILE *fp; /*定义文件指针fp*/char s1[80], s2[80], s[200]; /*声明3个一维数组*/if ((fp = fopen("myf2.out", "w")) == NULL){printf("can't open file");exit(0);}printf("\nEnter s1 string:");gets(s1);printf("\nEnter s2 string:");gets(s2); /*s1、s2 接收键盘输入的字符*/fun(s1, s2, s); /*调用change函数,对字符串s2进行逆序变换,再合并s1字符串和s2字符串并保存到s数组中*/printf("\nThe result is:%s\n", s);/*将合并后产生的数组s中的字符串输出到屏幕及结果文件中*/fprintf(fp, "%s", s);fprintf(fp, "\n");printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}3、先判断一个m×n矩阵为Monge矩阵,在对该矩阵进行交换处理#include<stdio.h>#include<stdlib.h>#define N 5void change(int a[][N], int n) /*该函数的功能是,对a指向的n行5列数组中的矩阵进行变换*/{int i, j, t;for (i = 0;i < n / 2;i++) /*通过两重for循环对数组各行的位置进行交换*/for (j = 0;j < N;j++){t = a[i][j];a[i][j] = a[n - 1 - i][j];a[n - 1 - i][j] = t;} /*变换形式:第一行与最后一行交换,第二行与倒数第二行交换……*/}int Monge(int a[][N], int n){int i, j;for (i = 0;i < n - 2;i++) /*利用for循环和if语句对数组元素进行矩阵判断,判断是否为Monge矩阵*/ { for (j = 0;j < N - 2;j++)if (a[i][j] + a[i + 1][j + 1] > a[i][j + 1] + a[i + 1][j])return 0;/*若矩阵不是Monge矩阵,函数返回0*/}return 1;/*若矩阵是Monge矩阵,函数返回1*/}void main(){int a[][N] = {{10, 17, 13, 28, 23}, {17, 22, 16, 29, 23},{24, 28, 22, 34, 24}, {11, 13, 6, 17, 7}, {45, 44, 32, 37, 23}}; /*数组初始化*/ int monge, i, j;FILE *fp;fp = fopen("myf2.out", "w"); /*以只写"w"方式打开文件*/if (fp == NULL)exit(0);monge = Monge(a, 5); /*调用Monge函数对a数组进行判断*/for (i = 0;i < N;i++) /*将a数组变换前中的元素输出到屏幕及结果文件中*/{for (j = 0;j < N;j++){printf("%4d", a[i][j]);fprintf(fp, "%4d", a[i][j]);}printf("\n");fprintf(fp, "\n");}if (monge){printf("a is Monge\n");fprintf(fp, "a is Monge\n");} /*将a数组变换前的判断结果输出到屏幕及结果文件中*/else{printf("a is not Monge\n");fprintf(fp, "a is not Monge\n");}change(a, 5); /*调用change函数对a数组进行变换处理*/for (i = 0;i < N;i++){for (j = 0;j < N;j++){ printf("%4d", a[i][j]);fprintf(fp, "%4d", a[i][j]);}printf("\n");fprintf(fp, "\n");} /*将a数组变换后的元素输出到屏幕及结果文件中*/monge = Monge(a, 5); /*调用Monge函数对经过变换的a数组进行判断*/if (monge) /*将a数组变换后的判断结果输出到屏幕及结果文件中*/{printf("a is Monge\n");fprintf(fp, "a is Monge\n"); }else{ printf("a is not Monge\n");fprintf(fp, "a is not Monge\n"); }printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}4、用一组整数验证命题#include<stdio.h>#include<stdlib.h>#define N 100int fun (int a[], int b[], int n){int i, j, x, y, z, s, t, m, k = 0;for (i = 0;i < n;i++) /*按题目要求的步骤进行交换,直到得到所要求的结果停止循环*/ if (a[i] / 1000 < 1){x = a[i] / 100;y = a[i] / 10 % 10;z = a[i] % 10; /*对数a[i]进行数位分离*/if (x != z){s = z * 100 + y * 10 + x; /*交换a[i]的百位数字与个位数字得到s*/t = s > a[i] ? (s - a[i]) : (a[i] - s); /*求a[i]和s的绝对值得到t*/x = t / 100;y = t / 10 % 10;z = t % 10;m = z * 100 + y * 10 + x; /*交换 t的百位数字与个位数字得到m*/if (t + m == 1089) /*判断t与m的和是否为1089*/b[k++] = i;}}return k; /*函数返回数组b中数据的个数*/}void main(){int a[N] = {123, 765, 1, 45, 121, 1345, 131, 67, 696, 3589}, b[N], n, i;FILE *fp; /*定义文件指针*/if ((fp = fopen("myf2.out", "w")) == NULL) /* 以只写"w"方式打开文件 */{printf("The file call not open!");exit(0);}n = dotest (a, b, 10); /*用a数组作为实参调用fun函数*/for (i = 0;i < n;i++){printf("%5d", a[b[i]]);fprintf(fp, "%5d", a[b[i]]);} /*将a数组中所有符合命题的整数输出到屏幕及结果文件中*//*将考生准考证号输出到屏幕及结果文件中*/printf("\nMy exam number is:WLJY001\n");fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件 */}5、找出7个默森尼数#include<stdio.h>#include<stdlib.h>#define N 7void Mersenne(long a[], int m);int prime(long);void main(){long a[N];int i;FILE *fp; /*定义文件指针*/fp = fopen("myf2.out", "w"); /*以只写"w"方式打开文件*/if (fp == NULL)exit(0);Mersenne(a, N); /*调用Mersenne 函数,找出并保存前7个Mersenne 数*/for (i = 0;i < N;i++){ printf("%8ld", a[i]);fprintf(fp, "%8ld", a[i]);} /* 将运行结果输出到屏幕及结果文件中*/ printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");}void Mersenne(long a[], int m) /*该函数的功能是,求出前m个Mersenne数*/{long f, n, k;int i = 0;a[i++] = 3;for (n = 3;i < m;n += 2){f = 1;for (k = 1;k <= n;k++)f *= 2; /*求2的n次方*/if (prime(n) && prime(f - 1)) /*当n和2的n次方减1均为素数时,该数为Mersenne 数*/ a[i++] = f - 1; /*将找到的Mersenne 数保存到数组a中*/}}int prime(long n) /*该函数的功能是,判断整数a是否是素数*/{long i;for (i = 2;i <= n / 2;i++)if (n % i == 0) return 0;return 1; /*若是素数函数返回值1*/}6、从一个指定的自然数#include<stdio.h>#include<stdlib.h>int linkrun(int a, int b, int *p);void main(){int i, a, b, max, p[100];FILE *fp;if ((fp = fopen("myf2.out", "w")) == NULL) /*以只写"w"方式打开文件*/{printf("The file call not open!");exit(0);}printf("Enter a,b:(a<b)");scanf("%d,%d", &a, &b); /*接收从键盘输入的a和b*/max = linkrun(a, b, p); /*以a、b、p作为实参调用函数*/for (i = 0;i <= b - a;i++){printf("%3d", p[i]);fprintf(fp, "%3d", p[i]);}printf("\nmax=%d", max);fprintf(fp, "\nmax=%d", max); /*将运行结果输出到屏幕及结果文件中*/printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}int linkrun(int a, int b, int *p){int i, k, m, n, num;num = 0;for (i = 0, k = a;k <= b;i++, k++) /*通过for循环,以[a,b]中所有自然数作为n*/{n = k;p[i] = 1;while (n != 1){++p[i]; /*将数列的长度保存到数组p中*/i f(n % 2) /*n为奇数时,按相应公式求解*/n = n * 3 + 1;else /*当n为偶数时,按相应公式求解*/n /= 2;}if (p[i] > num)num = p[i]; /*求出数组中最大值*/}return num; /*返回最大值*/}7、将一个十进制整数m转换成r进制整数的字符串表示形式#include<stdio.h>#include<stdlib.h>void trdec(char *str, int idec, int ibase) /*该函数的功能是,将十进制整数idec转换为ibase进制的字符串表示形式*/{char ch;int i, idr, k = 0;while (idec != 0){idr = idec % ibase; /*idec对ibase求余*/if (idr >= 10) /*判断余数,根据余数的值对其进行变换*/str[k++] = idr - 10 + 'A';elsestr[k++] = idr + '0';idec /= ibase;}for (i = 0;i < k / 2;i++) /*转换成ibase进制数的字符串形式后,将字符串保存到str指向的字符数组 */ {ch = str[i];str[i] = str[k - i - 1];str[k - i - 1] = ch;}str[k] = '\0';}void main(){int x;char str[20];FILE *fp; /*变量声明,定义文件指针fp */if ((fp = fopen("myf2.out", "w")) == NULL){printf("The file can not open!");exit(0);}printf("Enter a number"); scanf("%d", &x); /*接收从键盘输入的x*/trdec(str, x, 2); /*调用函数将该整数转换为二进制并输出到屏幕及结果文件中*/printf("%sB,", str);fprintf(fp, "%sB,", str);trdec(str, x, 8); /*调用函数将该整数转换为八进制并输出到屏幕及结果文件中*/printf("%sQ,", str);fprintf(fp, "%sQ,", str);trdec(str, x, 16); /*调用函数将该整数转换为十六进制并输出到屏幕及结果文件中*/printf("%sH\n", str);fprintf(fp, "%sH\n", str);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}8、将以为数组中的所有素数移到该数组的前端部分#include<stdio.h>#include<stdlib.h>int N;void insert(int *p, int x, int n){int i = 0, j;while (x > p[i] && i < n) /* ① p是指针类型,引用形式不对*/i++;for (j = n;j > i;j--)p[j] = p[j - 1];p[j] = x; /* ②此语句的作用是将x插入到元素p[j]的位置 */}int *create(){int *head, *p, i;printf("\n N=");scanf("%d", &N);head = (int *)malloc(N * sizeof(int)); /* ③分配内存空间函数malloc的调用形式错误,正确的为:(类型说明符*)malloc(size) */printf("Enter numbers:");p = head;for (i = 0;i < N;i++)scanf("%d", &p[i]); /* ④接收从键盘输入的数值要用取址运算符 */for (i = 1;i < N;i++)insert(p, p[i], i);return head;}void main(){int *head, *p, i, x;head = create();p = head;for (i = 0;i < N;i++)printf("%3d", *p++);free(head);}9、用以下展开式求#include<stdio.h>#include<ctype.h>#include<ctype.h> /* ①后续程序调用了字符函数isalpha,所以要加#include<ctype.h> */void replace_word(char s[]){char word_tab[4][10] = {"sad", "happy", "accuse", "forgive"};char t[10], tmp[80]; /* ②由后面的t[k]=s[j]知,此处定义的t不是一个字符变量,而是一个字符型数组*/int i, j, k, n;for (i = 0;s[i];i++){for (j = i, k = 0;isalpha(s[j]);k++, j++)t[k] = s[j];t[k] = 0;if (k > 0){for (n = 0;n < 4;n++)if (strcmp(t, word_tab[n]) == 0)break;if (n < 4){strcpy(tmp, s + i + strlen(t));strcpy(s + i, word_tab[(n + 1) % 4]);strcat(s, tmp); /* ③strcpy(str1,str2)是把字符串str2复制到str1中,会覆盖str1中的内容,此处应用strcat函数 */i = i + strlen(word_tab[(n + 1) % 4]);}elsei = i + strlen(t);}}}main(){char line[80] = "I am very sad.";replace_word(line);puts(line); /* ④输出字符串应调用函数puts,putchar只能输出单个字符 */}10、找出满足下列条件的整数对#include<stdio.h>#include<conio.h>int factor(int n) /*该函数的功能是,求整数n的所有因子之和*/{ int i, s = 0;for (i = 1;i <= n;i++)if (n % i == 0)s = s + i; /*各因子累加求和*/return s; /*返回和值*/}int fun(int n, int a[][2]) /*该函数的功能是,在[1,n] 中查找满足题目条件的整数对*/{ int i, j, g1, g2, k = 0;for (i = 2;i <= n;i++){g1 = factor(i); /*调用factor函数求得g1的因子之和*/for (j = 1;j < i;j++){g2 = factor(j); /*调用factor函数求得g2的因子之和*/if (g1 == g2 && g1 == i + j + 1) /*比较两因子之和,若符合要求,则将其存入数组a中*/{a[k][0] = j;a[k++][1] = i;}}}return k; /*返回数组a中元素个数*/}void main(){FILE *fp;int i, n, m, a[100][2];if ((fp = fopen("myf2.out", "w")) == NULL){printf("The file call not open!");exit(0);}scanf("%d", &n); /*接收键盘输入的n*/m = fun(n, a); /*用n,a作为实参调用fun函数*/for (i = 0;i < m;i++){printf("(%d,%d)\n", a[i][0], a[i][1]);fprintf(fp, "(%d,%d)\n", a[i][0], a[i][1]);} /*将a数组中的结果数据输出到屏幕及结果文件中*/printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp);}11、验证3~2008的所有素数中存在这样两个素数#include<stdio.h>#include<conio.h>#include<math.h>#include<stdlib.h>int prime(int n) /*该函数的功能是,判断整数a是否素数*/{ int i;for (i = 2;i <= n / 2;i++)if (n % i == 0) return 0; /*若不是素数,函数值返回0*/return 1; /*若是素数,函数值返回1*/}int fun(int n, int *a, int *b) /*该函数的功能是,在3~n之间寻找符合要求的一对素数*/{ int n1, n2;for (n1 = 3;n1 < n;n1 += 2){if (prime(n1))n2 = n - n1;if (prime(n2) && n1 + n2 == n) /*n1和n2均为素数,且和为n */{*a = n1;*b = n2; return 1;} /*将找到的两个素数分别保存到数组a和b中,函数返回1*/ }return 0; /*若找不到,函数返回0*/}void main(){FILE *fp; /*定义文件指针fp*/int n = 2008, a, b, c;if ((fp = fopen("myf2.out", "w")) == NULL){printf("Create File myf2.out failed!\n");exit(0);}c = fun(n, &a, &b); /*调用fun函数找出3~n之间和值为n的一对素数*/if (c) /*将找到的素数输出到屏幕并用写文件函数保存到结果文件中*/{printf("a=%d b=%d a+b=%d\n", a, b, a + b);fprintf(fp, "%d+%d=%d\n", a, b, a + b);}elsefprintf(fp, "not found!");printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}12、数组部分元素逆置#include<stdio.h>#include<conio.h>int prime(int a) /*该函数的功能是,判断整数a是否是素数*/{int k, i;if (a == 1) return 0;if (a == 2) return 1; /*a等于1和2时单独考虑*/for (i = 2;i < a;i++)if (a % i == 0) return (0);return (1); /*若是素数,函数返回1*/}void reverse(int *a, int n, int m){int i, k = -1, *b, *p, t; /*定义变量b和p为指针变量*/for (i = 0;i < n;i++)if (prime(a[i]))k = i; /*找到数组a中的最后一个素数*/p = a + k - 1;if (k - m < 0)b = a; /*判断最后一个素数之前的元素个数与m的大小*/else b = a + k - m;while (b < p) /*将最后一个素数之前的m个元素逆置*/{t = *b;*b = *p; *p = t;b++;p--;}}void main(){int a[20] = { 4, 3, 6, 7, 8, 13, 9, 19, 21, 26}}, i, m, n = 10;FILE *fp; /*定义文件指针 */if ((fp = fopen("myf2.out", "w")) == NULL){printf("Creat File myf2.out failed!\n");exit(0);}printf("Please input m:\n");scanf("%d", &m); /*接收从键盘输入的m值*/reverse(a, n, m); /*调用reverse函数变换数组a*/for (i = 0;i < n;i++) /*将变换后的数组a输出到屏幕并用写文件函数保存到结果文件中*/ {printf("%4d", a[i]);fprintf(fp, "%4d", a[i]);}printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}13、取出一个正整数中的所有偶数数字#include<stdio.h>#include<conio.h>#include<stdlib.h>void sort(int a[], int n) /*将数组a中的n个整数进行从大到小排列*/{ int i, j, k, t;for (i = 0;i < n - 1;i++) /*利用双重for循环*/{k = i;for (j = i + 1;j < n;j++)if (a[j] > a[k])k = j;if (k != i){t = a[k];a[k] = a[i];a[i] = t;}/*利用中间变量t交换两者的值,最后将数组按从大到小的顺序进行排列*/ }}long fun(long s){int d, b[10], i, j = 0;long s1 = 0;while (s > 0) /*利用while循环对数据s进行各位数字各位的分离*/{ d = s % 10;if (d % 2 == 0) /*判断各位是否为偶数,若是偶数则将其保存到数组b中*/b[j++] = d;s /= 10;}sort(b, j); /* 调用函数sort对b数组中存放的j个偶数进行排序*/for (i = 0;i < j;i++)s1 = s1 * 10 + b[i]; /* 利用j个偶数,构成一个最大的整数*/return s1; /* 返回构成的最大数*/}void main(){long m, n;FILE *fp; /*定义文件指针*/if ((fp = fopen("myf2.out", "w")) == NULL) /*以只写方式"w"打开文件*/{printf("The file call not open!");exit(0);}scanf("%ld", &n); /*接收从键盘输入的n */m = fun(n); /*调用fun函数求出整数n的所有偶数数字构成的一个最大数*/printf("%ld\n", m); /*将所得结果输出到屏幕并用写文件函数保存到结果文件中*/fprintf(fp, "%ld\n", m);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}14、找出符合以下条件的Troisty数#include<stdio.h>#include<conio.h>#include<math.h>#define N 10int Troitsky(long a[]) /*该函数的功能是,求出1000000以内所有的Troitsky数*/{int count = 0, b;long n, n1;for (n = 1;n <= 1000000;n++) /*利用for循环对1~1000000的数进行变换*/{n1 = n;b = 0;while (n1 > 0){b++;n1 /= 10;} /*确定数n的位数,求得数n的首位数字*/n1 = n % (long)pow(10, b - 1) * 10 + n / (long)pow(10, b - 1); /*将首位作为个位,其他三位数乘以10组成新的整数*/if (n1 / n == (double)n1 / n && n1 / n > 1) /*判断新的整数是否是原数n的整数倍*/ a[count++] = n; /*将符合要求的数存入数组a中*/}return count; /*函数返回Troitsky数的个数*/}void main(){long a[N], i;int k;FILE *fp; /*定义文件指针*/fp = fopen("myf2.out", "w"); /*以只写方式"w"打开文件*/if (fp == NULL)exit(0);k = Troitsky(a); /*调用Troitsky函数*/for (i = 0;i < k;i++) /*将运行结果输出到屏幕并用写文件函数保存到结果文件中*/{printf("%10ld", a[i]);fprintf(fp, "%10ld", a[i]); }printf("\n"); /*换行*/fprintf(fp, "\n");printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}15、产生Fibonacci#include<stdio.h>#include<conio.h>#include<math.h>#include<stdlib.h>int Fibonprime(long f[], int n){int i, m = 0;long a[40] = {1, 1}, j, k;for (i = 2;i < n;i++)a[i] = a[i - 2] + a[i - 1]; /*利用for循环生成数列的前n项*/for (i = 2;i < n;i++){k = (long)sqrt(a[i]);for (j = 2;j <= k;j++)if (a[i] % j == 0)break; /*判断其是否是素数*/if (j >= k + 1)f[m++] = a[i]; /*将素数存放到数组k中*/}return (m); /*数组中素数的个数作为函数值返回*/}main(){int i, m;long f[40];FILE *fp; /*定义文件指针 */fp = fopen("myf2.out", "w"); /*以只写方式"w"打开文件*/if (fp == NULL){ printf("Can not open de file!\n");exit(0);}m = Fibonprime(f, 30); /*调用函数Fibonprime 求出Fibonacci数列前30个数中的素数 */for (i = 0;i < m;i++) /*将找到的素数输出到屏幕并用写文件函数保存到结果文件中*/ printf("%ld\t", f[i]);for (i = 0;i < m;i++)fprintf(fp, "%ld\t", f[i]);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}16、在数列中查找、移动#include<stdio.h>#include<conio.h>void sumfac(int x[], int n);int fac(int n);main(){int i, a[10] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512};FILE *fp; /*定义文件指针*/if ((fp = fopen("myf2.out", "w")) == NULL){ printf("Creat File myf2.out failed!\n");exit(0);}sumfac(a, 10); /*调用函数sumfac对一维数值中的数列进行变换操作*/printf("\n");fprintf(fp, "\n");for (i = 0;i < 10;i++) /*将变换后的数列输出到屏幕并用写文件函数保存到结果文件中*/{printf("%6d", a[i]);fprintf(fp, "%6d", a[i]);}printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}int fac(int n) /*该函数的功能是,求得n的所有因子之和*/{int i, sum = 0;for (i = 1;i <= n;i++)if (n % i == 0)sum += i; /*求出n的所有因子及因子之和*/return sum; /*函数返回和值*/}void sumfac(int x[], int n){int i, j, k, m, sum;for (i = n - 1, k = 0;i >= k;i--) /*利用循环,从后向前遍历数列查找超完全数*/{sum = fac(x[i]); /*调用fac函数求得各元素的所有因子之和*/if (fac(sum) == x[i] *2) /*利用if判断其是否是超完全数*/{m = x[i];for (j = i;j > 0;j--)x[j] = x[j - 1]; /*移动超完全数之前需将数列所有数依次后移*/x[0] = m; /*将超完全数移动到数列的第一个位置*/k++;i++;}}}17、编写函数int Del-findged (int a[],int n,int *f)#include"stdio.h"#include"conio.h"int Del_findgcd(int a[], int n, int *f){int i, k, g;for (i = 0, k = 0;i < n;i++)if (i % 2 == 0)a[k++] = a[i]; /*利用循环判断数组元素的下标,若是奇数则将其删除*/ if (n % 2 == 0)n = n / 2; /*判断数组中剩余元素的个数 */else n = n / 2 + 1;k = a[0];for (i = 1;i < n;i++) /*通过循环找到能被所有数整除的最大的数即为最大公约数*/{g = a[i];while (k != g){if (k > g)k = k - g;else g = g - k;}}*f = k; /*保存最大公约数到f指向的变量中*/return n; /*函数返回数组中剩余的整数个数*/}main(){FILE *fp; /*定义文件指针*/int i, a[10] = { 6, 8, 9, 11, 12, 13, 15, 16, 18, 19}, f, n;if ((fp = fopen("myf2.out", "w")) == NULL){ printf("can't open file!");exit(0);}n = Dle_findgcd(a, 10, &f); /*调用Dle_findgcd函数删除数组中的所有满足条件的整数并求出剩余整数的最大公约数*/for (i = 0;i < n;i++) /*将数组中剩余的整数和这些整数的最大公约数输出到屏幕并用写文件函数保存到结果文件中*/{printf("%d,", a[i]);fprintf(fp, "%d,", a[i]);}printf("max common divisor=%d\n", f);fprintf(fp, "max common divisor=%d\n", f);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}18、找出给定范围内的和亲数#include<stdio.h>#include<stdlib.h>#include<conio.h>int heqinmath(int m, int n, int a[][2]){int i, j, m1, s1, s2, count = 0;for (m1 = m;m1 < n;m1++) /*通过循环对m~n的整数进行依次判断*/{ s1 = 1;s2 = 1;for (i = 2;i < m1;i++)if (m1 % i == 0)s1 = s1 + i; /*找到某一整数m1的全部真因子并求和*/for (j = 2;j < s1;j++)if (s1 % j == 0)s2 = s2 + j; /*找到和值s1的真因子并求和*/if ((s2 == m1) && (m1 != s1))/*判断是否为和亲数*/{a[count][0] = m1;a[count++][1] = s1; /*将和亲数对保存到a指向的数组中*/}}return count; /*函数返回a数组中和亲数对的个数*/}main(){int count, i, m, n, a[10][2];FILE *fp; /*定义文件指针*/fp = fopen("myf2.out", "w"); /*以只写方式"w"打开文件*/if (fp == NULL){printf("Can not open the file!\n");exit(0);};printf("Please input m,n:\n");scanf("%d%d", &m, &n); /*从键盘输入m和n*/count = heqinmath(m, n, a); /*调用函数heqinmath,求出m~n之间所有的和亲数对*/for (i = 0;i < count;i++) /*将计算结果输出到屏幕并用写文件函数保存到结果文件中*/ printf("(%d,%d)\n", a[i][0], a[i][1]);for (i = 0;i < count;i++)fprintf(fp, "(%d,%d)\n", a[i][0], a[i][1]);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}19、编写函数int prime-m(int n,int x[],long y[])#include<stdio.h>#include<stdlib.h>#include<math.h>int prime_m(int n, int x[], long y[]){int i, j, m, count;long k = 0, q, k1, k2, k3;for (m = 2;m <= n;m++) /*通过循环在2~n之间查找符合条件的整数*/{k1 = pow(2, m) - 1;q = sqrt(k1);for (j = 2;j <= q;j++)if (k1 % j == 0)break;if (j <= q)continue; /*判断2m-1是否为素数*/count = 0;k3 = k1;k2 = 0;while (k3 > 0){int w = k3 % 10;if (w == 1) /*判断2m-1的十进制表示中是否包含数字1*/{count++;}k2 = k2 * 10 + w;k3 = k3 / 10;}if (k2 % 2 == 0)continue; /*判断2m-1的反序数是否为奇数*/if (count > 0){x[k] = m;y[k++] = k1;} /*符合条件的所有整数m保存到x指向的数组中,将与m对应的整数2m-1保存到y指向的数组中*/}return k; /*函数返回x数组中保存的整数个数*/}main(){FILE *fp; /*定义文件指针*/long a[20];int i, j, n, b[20], m;if ((fp = fopen("myf2.out", "w")) == NULL){printf("Open file myf2.out failed!\n");exit(1);}printf("input n:");scanf("%d", &n); /*接收从键盘输入的参数n*/m = search(n, b, a); /*调用search函数分别求得满足上述条件的所有三位正整数和所有四位正整数*/ for (i = 0;i < m;i++) /*将满足条件的三位正整数和四位正整数输出到屏幕并用写文件函数保存到结果文件中*/{ printf("%5d%15ld\n", b[i], a[i]); fprintf(fp, "%5d%15ld\n", b[i], a[i]);}printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}20、编写函数int find(int n,long x[])#include<stdio.h>#include<conio.h>#include<limits.h>#define min(x,y) ((x)<(y)?(x):(y)) /* ①宏定义的格式为:#define 标识符(形参表)形参表达式,形参表中的形参无需声明类型*/int min_dist(int a[], int b[], int m, int n) /* ②由后面程序知,函数的前两个形参均为数组,所以此处应改为min_dist(int a[],int b[],int m,int n) */{int min = INT_MAX;int ia = 0, ib = 0;while (ia < m && ib < n) /* ③循环限制条件应是ia,ib都不能大于数组元素的个数,两者是"与"的关系*/if (a[ia] >= b[ib]){min = min(min, a[ia] - b[ib]);ib++;}else{min = min(min, b[ib] - a[ia]);ia++;}return min;}main(){int a[] = {2, 4, 8, 11, 16}, b[] = {1, 5, 7, 13, 24};int i, m, n;m = sizeof(a) / sizeof(int);n = sizeof(b) / sizeof(int);printf("\n");for (i = 0;i < m;i++)printf("%5d", a[i]);printf("\n");for (i = 0;i < n;i++) printf("%5d", b[i]);printf("\n min distance=%d", min_dist(a, b, m, n)); /* ④此处需要输出函数的返回值,printf 函数格式控制符应为 "%d"*/getch();}。
二级c语言上机考试题库答案
二级c语言上机考试题库答案1. 题目:编写一个C语言程序,计算并输出两个整数的和。
```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("两个整数的和为:%d\n", sum);return 0;}```2. 题目:编写一个C语言程序,实现字符串的反转。
```c#include <stdio.h>#include <string.h>void reverse(char str[]) {int len = strlen(str);for (int i = len - 1; i >= 0; i--) {printf("%c", str[i]);}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);printf("反转后的字符串为:");reverse(str);printf("\n");return 0;}```3. 题目:编写一个C语言程序,计算并输出一个3x3矩阵的转置矩阵。
```c#include <stdio.h>#define ROWS 3#define COLS 3void transposeMatrix(int matrix[ROWS][COLS], inttransposed[COLS][ROWS]) {for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS; j++) {transposed[j][i] = matrix[i][j];}}}void printMatrix(int matrix[ROWS][COLS]) {for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS; j++) {printf("%d ", matrix[i][j]);}printf("\n");}}int main() {int matrix[ROWS][COLS] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};int transposed[COLS][ROWS];transposeMatrix(matrix, transposed);printf("原始矩阵:\n");printMatrix(matrix);printf("转置矩阵:\n");printMatrix(transposed);return 0;}```4. 题目:编写一个C语言程序,实现冒泡排序算法。
c语言上机考试试题
c语言上机考试试题C语言上机考试试题在计算机科学领域中,C语言是一门重要的编程语言,广泛应用于软件开发、系统编程等方面。
作为计算机专业的学生,掌握C语言的基本知识和编程技巧是必不可少的。
为了检验学生对C语言的掌握程度,许多学校和培训机构会安排C语言上机考试。
下面,我们来看一些典型的C语言上机考试试题。
1. 编写一个程序,从键盘输入一个整数n,计算并输出1到n的累加和。
这道题考察了学生对循环结构的理解和运用。
学生需要使用循环语句(如for、while等)来实现累加的功能,并且注意输入的合法性。
2. 编写一个程序,从键盘输入一个字符串,统计并输出其中的字母、数字和其他字符的个数。
这道题考察了学生对字符串处理的能力。
学生需要使用字符数组和循环语句来逐个判断输入字符串中的字符,并根据字符的类型进行计数。
3. 编写一个程序,从键盘输入一个正整数n,判断并输出n是否为素数。
这道题考察了学生对素数判断的理解和实现。
学生需要使用循环语句和条件判断语句来判断n是否能被2到sqrt(n)之间的任意整数整除。
4. 编写一个程序,从键盘输入一个正整数n,计算并输出n的阶乘。
这道题考察了学生对递归的理解和应用。
学生可以使用递归函数来实现阶乘的计算,也可以使用循环语句来实现。
5. 编写一个程序,从键盘输入一个字符串,将其中的大写字母转换为小写字母,并输出转换后的字符串。
这道题考察了学生对字符处理的能力。
学生需要使用字符数组和循环语句来逐个判断输入字符串中的字符,并根据字符的ASCII码进行转换。
6. 编写一个程序,从键盘输入一个字符串,判断并输出该字符串是否为回文字符串。
这道题考察了学生对字符串处理和回文判断的能力。
学生需要使用字符数组和循环语句来逐个比较输入字符串中的字符,并判断是否为回文字符串。
通过上述的典型试题,我们可以看到C语言上机考试主要考察学生对基本语法、流程控制、数组和字符串处理等方面的掌握程度。
在解答这些试题时,学生需要注重代码的逻辑性、清晰性和效率性,避免出现死循环、数组越界等常见错误。
8-6-C语言上机考试试题19
C 语言上机考试试题-191. 选择题(评分标准20 分,每小题2分)1.若有如下定义,则________是对数组元素的正确的引用。
int a[10] , *p ;p=a ;(A)*&a[10] (B)a[11] (C)*(p+10) (D) *p2.设整型变量n的值为2,执行语句:n+=n-=n*n; 后,n的值是________。
(A) 0 (B) 4 (C) - 4 (D) 23.以下不能正确定义二维数组的语句是________。
(A) int a[2][2]={{1},{2}}; (B) int a[][2]={1,2,3,4};(C) int a[2][2]={{1},2,3}; (D) int a[2][]={{1,2},{3,4}};4.设变量定义为int a[3]={1,4,7},*p=&a[2];,则*p的值是________。
(A) &a[2] (B) 4 (C) 7 (D) 15.能正确表示a和b同时为正或同时为负的逻辑表达式是________。
(A) (a>=0||b>=0)&&(a<0 ||b<0) (B) (a>=0 && b>=0)&&(a<0 && b<0)(C) (a+b>0) &&(a+b<=0) (D) a*b>06.C语言中,合法的字符型常数是________。
(A) 'A' (B) "A" (C) 65 (D) A7.下列关于指针定义的描述,________是错误的。
(A)指针是一种变量,该变量用来存放某个变量的地址值的。
(B)指针变量的类型与它所指向的变量类型一致。
(C)指针变量的命名规则与标识符相同。
(D)在定义指针时,标识符前的"*"号表示后面的指针变量所指向的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一场 一、程序文件名:(食安一班为SA开头+学号,二班为SB开头+学号)如一班60号为SA60.c, 二班90号为SB90.c文件存放在E盘根目录下。 程序文件名:(营养班为Y开头+学号,乳品班为R开头+学号)如营养班60号为Y60.c, 乳品班90号为R90.c文件存放在E盘根目录下。 二、编一个程序,实现以下功能 1. 运行C语言程序时,首先显示自己的班级、学号、姓名(用拼音) 2. 在主函数中建立一个循环,由键盘输入1个整型数给变量a,子函数判断奇、偶数并打印,若是奇数则打印'J',若是偶数则打印'O',主函数输入0时结束循环。 #include "stdio.h" void main() { int a=1; void pd(int); printf("YY1201\n122605109\nJiangHong\n"); while(a) scanf("%d",&a),pd(a); getch(); } void pd(int x) {if(x%2==0) printf("o\n"); else printf("J\n");
}
第二场 2.主函数产生10个1-10的随机数(存放在数组中),并打印;子函数打印其中的偶数。 #include "stdlib.h" randomize(); rand() #include "stdio.h" #include"stdlib.h" void main() { int i,a[10]; randomize(); printf("YY1201\n122605109\nJiangHong\n"); for(i=0;i<10;i++) a[i]=rand()%10+1, printf("%d",a[i]); printf("\n"); os(a); getch();} os(int b[]) {int j; for(j=0;j<10;j++) if(b[j]%2==0) printf("%d",b[j]);
}
第三场 2.主函数键盘输入2个数给变量a和b,子函数比较后,返回大数, 如果两数相等,主函数打印 0 ,如果两数不等,主函数打印大数。 main() { int a,b; scanf("%d%d",&a,&b); if(maxx(a,b)=="a=b") printf("0\n"); else printf("%d\n",maxx(a,b)); getch(); } maxx(int x,int y) { if(x==y) return "a=b"; else return x>y?x:y; }
第四场 2.主函数产生6个1-4的随机数(存放在数组中),并打印;子函数打印其中的偶数、奇数和。 #include "stdlib.h" randomize(); rand() #include "stdio.h" #include "stdlib.h" main() { int a[6],i; randomize(); printf("YY1201\n122605109\njianghong\n"); for(i=0;i<6;i++) a[i]=rand()%4+1,printf("%2d",a[i]); printf("\n"); jo(a); getch(); } jo(int b[]) {int i,j=0,o=0; for(i=0;i<6;i++) if(b[i]%2)j+=b[i]; else o+=b[i]; printf("js=%-6d os=%-6d\n",j,o); }
第五场 2. 在主函数中产生6个随机的小写字母,在子函数中变成大写字母,并反向输出。 #include "stdlib.h" randomize(); rand() #include "stdio.h" #include "stdlib.h" main() { char a[6]; int i; randomize(); printf("YY1201\n122605109\njianghong\n"); for(i=0;i<6;i++) a[i]=rand()%26+97,printf("%2c",a[i]); printf("\n"); jo(a); getch(); } jo(char b[]) {int i; for(i=5;i>=0;i--) printf("%2c",b[i]-32); }
第六场 2. 在主函数中输入一个字符串,在子函数中输出其中的字母。 #include "stdio.h" main() { char a[60]; printf("YY1201\n122605109\njianghong\n"); gets(a); printf("\n"); jo(a); getch(); } jo(char b[]) {int i=-1; while(b[++i]!='\0') if(b[i]>='A'&&b[i]<='Z'||b[i]>='a'&&b[i]<='z') printf("%2c",b[i]); printf("\n"); } 第七场 2. 在主函数中产生10个随机的小写字母,在子函数中排序(升序)输出。 #include "stdlib.h" randomize(); rand() #include "stdio.h" #include "stdlib.h" main() { char a[11]; int i; randomize(); printf("YY1201\n122605109\njianghong\n"); for(i=1;i<=10;i++) a[i]=rand()%26+97,printf("%2c",a[i]); printf("\n"); jo(a); getch(); } jo(char a[]) {int i,j,t; for(i=1;i<=9;i++) for(j=i+1;j<=10;j++) if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j]=t;} for(i=1;i<=10;i++) printf("a[%d]=%d\n",i,a[i]); }
第八场 2.主函数产生10个1-10的随机数并打印,在子函数中打印最大数和最小数。 #include "stdlib.h" randomize(); rand() #include "stdio.h" #include"stdlib.h" main() {int i,a[10]; randomize(); printf("YY1201\n122605109\nJiangHong\n"); for(i=0;i<10;i++) a[i]=rand()%10+1, printf("%d",a[i]); printf("\n"); mn(a); getch();} mn(int a[]) {int j,max=a[0],min=a[0]; for(j=0;j<10;j++) {if(a[j]>max) max=a[j]; if(a[j]min=a[j];} printf("max=%d,min=%d\n",max,min); } 3.主函数键盘输入2个数给变量a和b,子函数比较后,返回大数, 主函数打印结果,如果2数相等,主函数打印a=b。 main() { int a,b; scanf("%d%d",&a,&b); if(maxx(a,b)=="a=b") printf("a=b\n"); else printf("%d\n",maxx(a,b)); getch(); } maxx(int x,int y) { if(x==y) return "a=b"; else return x>y?x:y; }
main() { int a,b; scanf("%d%d",&a,&b); if(maxx(a,b)==0&&a==b) printf("a=b\n"); else printf("%d\n",maxx(a,b)); getch(); } maxx(int x,int y) { if(x==y) return 0; else return x>y?x:y; }
2.主函数键盘输入2个数a和b, 子函数虚参为x,y,在子函数中打印大数,如果2数相等, 在子函数中打印'E'。
1. #include "stdio.h" void main() { int a=1; void pd(int); printf("班级 学号 姓名\n"); while(a) scanf("%d",&a),pd(a);