C语言上机练习题 (2)
- 格式:doc
- 大小:34.50 KB
- 文档页数:3
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(2)总分:100分及格:60分考试时间:120分一、选择题(每小题1分,共40分)(1) 有下列程序:void sort(int a[],int n) { int i,j,t;for(i=0;i<n-l;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]一a[j];a[j]=t;} }main(){ int aa[10]:{1,2,3,4,5,6,7,8,9,10),i;sort(aa+2,5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运行后的输出结果是( )。
A. 1,2,3,4,5,6,7,8,9,l0,B. 1,2,7,6,3,4,5,8,9,10,C. 1,2,7,6,5,4,3,8,9,10,D. 1,2,9,8,7,6,5,4,3,10,(2) 执行下列程序后,变量a,b,C的值分别是( )。
int x=5,y=4;int a,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A. a=5,b=5,c=5B. a=4,b=5,c=5C. a=5,b=6,c=5D. a=1,b=5,c=6(3) 设有如下定义:int arr[]={6,7,8,9,10);int*ptr:ptr=arr;*(ptr2)=2;printf("%d,%d\n",*ptr,*(ptr2)):则下列程序段的输出结果为( )。
A. 8,10B. 6,8C. 7,9D. 6,2(4) 以下所列的C语言常量中,错误的是()。
A. 0xFFB. 1.2e0.5C. 2LD. ‘72’(5) 数字字符0的ASCII值为48,运行以下程序的输出结果是( )。
第1章C语言概述一、选择题1.C 2.D 3.C 4.C 5.B6.C 7.C 8.D 9.C 10.A二、填空题1.主函数main 2.分号3./* */ //4.源程序.c 目标程序.obj 可执行程序.exe三、编程题1.参考代码#include <stdio.h>int main(){printf("欢迎来到C语言的世界!\n");return 0;}2.参考代码#include <stdio.h>int main(){int a,b,c;a=2;b=3;c=a+b;printf("c=%d\n",c);return 0;C 语言程序设计上机指导与习题 }第2章 算 法一、选择题1.D2.A3.A4.C5.B二、填空题1.算法2.顺序结构、选择结构(分支结构)、循环结构三、编程题1.算法的流程图如图2-1所示,算法的N-S 流程图如图2-2所示。
a>ba>cb>cmax=amax=c max=b max=c真真真假假假开始输入a ,b ,c 的值输出max 的值结束图2-1 流程图第二部分 习题答案输入a ,b ,c 的值判断a>b是否输出max 的值判断b>c判断a>c 是是否否max=amax=cmax=b max=c图2-2 N-S 流程图2.算法的流程图如图2-3所示,算法的N-S 流程图如图2-4所示。
开始num1=0,num2=0,num3=0输出num1,num2和num3的值结束No Yes 输入c 的值是否是小写字母num1++是否是大写字母num2++是否是数字num3++判断c 是否为#Yes No NoYes YesNo图2-3 流程图C 语言程序设计上机指导与习题判断是否是小写字母是否是否是大写字母是num1++否是否是数字num1=0,num2=0,num3=0输入c 的值是否num2++num3++当输入的字符c 不为#时输出num1,num2和num3的值图2-4 N-S 流程图第3章 C 程序设计基础一、选择题1.C 2.C 3.C 4.D 5.A 6.B 7.D 8.B 9.A 10.A 11.A 12.A 13.B 14.D 15.A 16.A17.B18.A19.A20.D二、填空题1.字母 数字 下划线 字母 下划线2.23.04.2第二部分习题答案5.1个2个6.(a/100) % 107.'f' 8.6 9.710.6.700000 2.000000 11.10,1812.d=13,e=13.200000三、编程题1.参考代码#include<stdio.h>int main(){int num,a,b,c;printf("Please input the number:");scanf("%d",&num);a=num/100;b=(num-100*a)/10;c=num-100*a-10*b;a+=b*10+c*100;printf("The result is%d\n",a);return 0;}2.参考代码#include <stdio.h>int main(){float c,f;f=120.3;c=5.0/9*(f-32);printf("c=%f\n",c);return 0;}3.参考代码#include <stdio.h>int main( ){C语言程序设计上机指导与习题int a,b,c;printf("请输入a的值\n");scanf("%d",&a);printf("请输入b的值\n");scanf("%d",&b);c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;printf("c=%d\n",c);return 0;}第4章顺序结构程序设计一、选择题1.A 2.D 3.B 4.A 5.C 6.D 7.B 8.B二、填空题1.空格制表符回车2.printf("%.2f\n",n);3.A4.0.33%5.n1=%04d\nn2=%04d6.①putchar(a); ②putchar(b);7.①b=a+32; ②putchar(b);8.n1=1,n2=129.aabb cc abc A B10.x=3.600000,i=3三、编程题1.参考代码第二部分习题答案#include <stdio.h>int main(){int i;int s1,s2,s3,s4;int sum;double average;sum=average=0;scanf("%d,%d,%d,%d",&s1,&s2,&s3,&s4);sum=s1+s2+s3+s4;average = (double)sum/4;printf("sum=%d\n",sum);printf("average=%f\n",average);return 0;}2.参考代码#include <stdio.h>int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+5;c2=c2+5;c3=c3+5;c4=c4+5;c5=c5+5;printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);return 0;}3.参考代码#include <stdio.h>int main(){int a=560;int h,m;h=a/60;C语言程序设计上机指导与习题m=a%60;printf("560分钟=%d小时%d分钟\n",h,m);return 0;}第5章选择结构程序设计一、选择题1.C 2.B 3.C 4.C 5.D 6.B 7.C 8.C 9.C 10.D 11.B 12.C 13.C 14.A 15.B 16.A 17.D 18.B 19.B 20.D二、填空题1.算术运算符赋值运算符2.a>1&&a<43.if(a%3)4.x>z||y>z5.11,19,30,16.67.08.①getchar(); ②ch<='Z'-6 ③ch=ch+6;④'Z'-6<ch&&ch<='Z' ⑤ch=ch+5-'Z'+'A';三、编程题1.参考代码#include<stdio.h>int main(){char num='0';第二部分习题答案scanf("%c",&num);if (num>='a'&&num<='z')printf("小写字母\n");else if (num>='A'&&num<='Z')printf("大写字母\n");elseprintf("不是字母\n");return 0;}2.参考代码#include<stdio.h>int main(){int grade;printf("input grade(0-100):");scanf("%d",&grade);if(grade>100)printf("Input error!\n");else if(grade>=90)printf("Very Good!\n");else if(grade>=80)printf("Good!\n");else if(grade>=70)printf("Middle!\n");else if(grade>=60)printf("Pass!\n");elseprintf("No pass!\n");return 0;}3.参考代码#include <stdio.h>int main(){int month;C语言程序设计上机指导与习题printf("input month(1-12):");scanf("%d",&month);if(month>=3&&month<=5)printf("spring");if(month>=6&&month<=8)printf("summer");if(month>=9&&month<=11)printf("autumn");if(month==12||month==1||month==2)printf("winter");if(month>12||month<1)printf("error month!");return 0;}4.参考代码#include <stdio.h>int main(){char c;printf("请输入一个大写字母:\n");scanf("%c",&c);if('B'<=c&&c<='Y')printf("前一个字母为%c,后一个字母为%c\n",c-1,c+1);else if(c=='A')printf("没有前面的字母,后一个字母为%c\n",c+1);elseprintf("前一个字母为%c,没有后面的字母",c-1);return 0;}5.参考代码#include <stdio.h>int main(){int a,b,c,t,x;printf("input 3 integers:");scanf("%d,%d,%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(b<c)x=b;else if(a<c)x=c;elsex=a;printf("the middle number is:%d",x);return 0;}第6章循环结构程序设计一、选择题1.B 2.B 3.B 4.A 5.B6.C 7.A 8.C 9.C 10.B11.B12.A13.C 14.B 15.A16.A 17.C 18.A 19.C 20.B二、填空题1.while do-while for 不管循环条件是否成立,do-while循环都先执行一次循环体,所以do-while循环的循环体至少执行一次,而while循环的循环体可能一次都不执行。
晕(作业3)看着这样的“回”形图案你晕吗?让我们不用数组,来做出它。
输入:n。
正方形的边长输出:边长为n 的数字回形方阵。
测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示13↵以文本方式显示2 1 2 3↵38 9 4↵47 6 5↵无限制64M 0测试用例2 以文本方式显示54↵以文本方式显示6 1 2 3 4↵712 13 14 5↵811 16 15 6↵910 9 8 7↵无限制64M 0测试用例5 以文本方式显示105↵以文本方式显示11 1 2 3 4 5↵1216 17 18 19 6↵1315 24 25 20 7↵1414 23 22 21 8↵1513 12 11 10 9↵无限制64M 0开启时间2012年03月31日星期六12:00折扣时间2012年04月18日星期三23:55关闭时间2012年04月22日星期日23:55允许迟交:否H5 铺地板(选作)(作业3)背景:你是一名室内装潢工程队的配料员。
你的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案如下:1 2 6 7 153 5 8 14 164 9 13 17 2210 12 18 21 2311 19 20 24 25 学了C 语言以后,你决定编写一个程序,帮助你的同伴生成这样的图形。
输入:方阵N的大小。
输出方阵。
测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示15↵以文本方式显示2 1 2 6 7 15↵3 3 5 8 14 16↵4 4 9 13 17 22↵510 12 18 21 23↵611 19 20 24 25↵1秒64M 0测试用例2 以文本方式显示73↵以文本方式显示8 1 2 6↵9 3 5 7↵10 4 8 9↵1秒64M 0 H7 子数整除(选作)()作业3对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:•sub1=a1a2a3•sub2=a2a3a4•sub3=a3a4a5例如,五位数20207可以拆分成:•sub1=202•sub2=020(=20)•sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。
1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
.6: 第6题请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。
其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
7: 第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。
8: 第8题编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。
S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)9: 第9题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。
M与n为两个正整数,且要求m>n。
p=m!/n!(m-n)!10: 第10题编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。
一.选择题
二.程序题
1. 从键盘输入x,计算,并把结果输出到屏幕上;
如输入3.2,输出结果为0.324813
2.从键盘输入一个实数,输出这个实数的个位数和第一位小数的乘积,如输入42.834,则输出16
3. 从键盘输入x的值,计算fun(x),并将结果输出到屏幕上
4. 程序改错题:修改如下程序,使之完成功能:输出200以内除以3余数为2的所有自然数之和的平方根。
(只能对红色画线的部分修改,其他地方不能改动);
#include <stdio.h>
#include <math.h>
void main()
{
double s=0.0,y;
int i;
for(i=1;i<200;i++)
s+=i;
printf("y=%f\n",y);
}
5.程序填空,在横线上填入适当的语句,输出如下星型图案,其中行数n从键盘输入如下图,当n=5时
#include<stdio.h>
main()
{
;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
;
printf(" ");
for (k=1;k<=7;k++)
printf("*");
printf("\n");
}
}
6.编程输出100-200之间的所有能被3和5同时整除的整数,并统计个数。
第一次课熟悉win-TC编译环境、熟悉C语言程序结构1.使用C 语言编译环境,输入下面的源程序。
将你的程序命名为hello.c,然后编译运行它。
/* program writes the words "Hello, world" to the screen *File : Hello.c* By : NJCIT* Date : 07-03-09*/#include <stdio.h>main(){printf("Hello, world\n");return(0);}2.main() /*求两数之和*/{int a,b,sum; /* 这是变量定义*/a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}问题:1.一个C语言源程序从哪里开始执行?2. C程序的函数由几部分构成?3. ANSI C 中的注释内容是用什么符号界定?第二次课熟悉printf()函数、常见转义字符及各种数据类型的输出格式1.2. main(){int a=5,b=7,c=-1;float x=67.8564,y=-789.124;char c=‘A’;long n=1234567;unsigned u=65535;printf(“%d%d\n”,a,b);printf(“%3d%3d\n”,a,b);printf(“%f,%f\n”,x,y);printf(“%-10f%-10f\n”,x,y);printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n”,x,y,x,y,x,y);printf(“%e,%10.2e\n”,x,y);printf(“%c,%d,%o,%x\n”,c,c,c,c);printf(“%ld,%lo,%x\n”,n,n,n);printf(“%u,%o,%x,%d\n”,u,u,u,u);printf(“%s,%5.3s\n”,”COMPUTER”,”COMPUTER”);}3. 假设下面的例子都是完整程序的一部分,那么他们每一个将会输出什么?4.加载,编译并运行下面的程序。
第二章上机及作业题第二章上机题用三种存储结构(顺序表,链表,静态链表)求解josuphu问题!1:顺序表#include<stdio.h>#define max 100typedef struct{int data[max];int length;}stack,*pstack;pstack Creat() /*顺序表初始化*/{pstack p;p=(pstack)malloc(sizeof(stack));if(p)p->length=0;return p;}void Creatstack(pstack p) /*创建一个顺序表*/{int i,l,x;printf("please stack's length:\n");scanf("%d",&l);p->length=l;printf("please enter a stack:\n");for(i=0;i<l;i++){scanf("%d",&x);p->data[i]=x;}}Deletes(pstack p,int x) /*删除指定位置的元素*/{int i;for(i=x;i<=p->length;i++){p->data[i]=p->data[i+1];}p->length--;}int josephus(pstack p) /*约瑟夫循环*/{int s1,i,s,m,w;printf("please enter start adress:\n");scanf("%d",&s);printf("please enter how long to out eachother:\n");scanf("%d",&m);if(!p->length){printf("empty!\n");return 0;}s1=s-1;printf("please answer:\n");for(i=p->length;i>0;i--){s1=(s1+m-1)%i;w=p->data[s1];printf("%4d",w);Deletes(p,s1);}return 1;}int main() /*主函数*/ {pstack Q;Q=Creat();Creatstack(Q);josephus(Q);getch();}2:链表解决#include<stdio.h>typedef struct node /*定义一个链表结构体*/ {int data;struct node *next;}list,*List;void Putlist(List L) /*输入一个链表*/{int x,i,length;List s;L=NULL;printf("please enter the length:\n");scanf("%d",&length);printf("please enter the list:\n");for(i=0;i<length;i++){s=(List)malloc(sizeof(list));scanf("%d",&x);s->data=x;s->next=L;L=s;}s->next=L;}void Dislist(List L) /*输出链表*/{List p=L->next;printf("%d",L->data);while(p!=L){printf("%3d",p->data);p=p->next;}printf("\n");}int josephs(List L) /*约瑟夫循环的计算*/ {int s,m,count;List p,pre;printf("start in:\n");scanf("%d",&s);printf("how often:\n");scanf("%d",&m);if(!L){printf("the list is empty!\n");return 0;}p=L;for(count=1;count<s;count++){p=p->next;}printf("put the answer:\n");while(p!=p->next){for(count=1;count<m;count++) {pre=p;p=p->next;}printf("%2d",p->data);pre->next=p->next;free(p);p=pre->next;}printf(" %d",p->data);free(p);return 1;}void main(){int x,i,length;List L,s,r;s=L=(List)malloc(sizeof(list)); printf("please enter the length:\n"); scanf("%d",&length);printf("please enter the list:\n"); scanf("%d",&x);L->data=x;for(i=0;i<length-1;i++){r=(List)malloc(sizeof(list)); scanf("%d",&x);r->data=x;s->next=r;s=s->next;}s->next=L;josephs(L);getch();}3:静态链表#include<stdio.h>#define MAXSIZE 100struct node{int number;int next;}string[MAXSIZE];int josephus(void) /*约瑟夫循环*/ {int total;int out;int start;int i,j=1;int flag=0;int current,front;printf("The total number is:");scanf("%d",&total);printf("The out number is:");scanf("%d",&out);printf("The starting number is:");scanf("%d",&start);if(out==1) return total;for(i=0;i<total;i++){string[i].number=i+1;string[i].next=i+1;}string[i-1].next=0;front=total-1;current=0;for(i=1;i<start;i++){front=string[front].next;current =string[current].next;}while(flag<total){if(j%out==0){string[front].next=string[current].next;current=string[front].next;j=1;flag++;}else{j++;front=string[front].next;current =string[current].next;}}return(string[current].number);}void main(){int t;t=josephus();printf("The last one is %d",t);getch();}第二章作业:1.已知递增有序的两个单链表A,B分别存储了一个集合。
上机考试练习题1、程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入 x,计算并输出下列分段函数 f(x) 的值(保留1位小数)。
当 x 不等于0时,y = f(x) = 1/x,当 x 等于0时,y = f(x) = 0。
输入输出示例:括号内是说明输入2 (repeat=2)10 (x=10)0 (x=0)输出f(10.00) = 0.1f(0.00) = 0.0#include <stdio.h>\{int repeat, ri;double x, y;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){scanf("%lf", &x);/*---------*/if(x!=0) y=1/x;else y=0;printf("f(%.2f) = %.1f\n", x, y);}}20022程序填空,不要改变与输入输出有关的语句。
输入华氏温度,输出对应的摄氏温度。
计算公式:c = 5*(f-32)/9,式中:c表示摄氏温度,f表示华氏温度。
输入输出示例:括号内为说明输入150 (fahr=150)输出celsius = 65#include <stdio.h>int main(void)int celsius, fahr;/*---------*/scanf(“%d”,&fahr);celsius=5.0*(fahr-32)/9;printf("celsius = %d\n", celsius);}20023程序填空,不要改变与输入输出有关的语句。
输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。
第1套上机操作题一、程序填空题【微答案】(1) 0 (2) i++或++i或i+=1或i=i+1 (3)2.0*i【微分析】填空1:循环变量1从开始参加运算,但是在每次循环的开始i都进行自加1操作,故i应赋初值为0。
填空2:循环变量i自增1运算。
填空3:根据公式确定表达式通项。
注意x为double类型,故应将i变为double类型再进行运算。
二、程序修改题【微答案】(1)void fun ( char *s , char *t )(2)t[2*d]='\0';或t[d+i]='\0';或t[2*d]=0;或t[d+i]=0;【微分析】(1)从调用函数来看,函数传递的是数组,所以函数的形参应为指针。
(2) 循环结束后回文字符的个数为2*d个,因为数组下标是从0开始的,所以最后一个字符的下标为2*d-1,在最后一个字符的后面加上结束符'\0',因此为t[2*d]='\0';。
三、程序设计题【微答案】void fun(char *s, char t[]){int i,j=0,n;n=strlen(s);for(i=0;i<n;i++)if(i%2!=0&&s[i]%2!=0){t[j]=s[i]; /*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/ j++;}t[j]='\0'; /*最后加上结束标识符*/}【微分析】本题要求除了下标为奇数同时ASCII码值也为奇数的字符之外,其余的所有字符都删除。
即要留下下标为奇数同时ASCII码值也为奇数的字符。
所以if的条件语句中应使用if(i%2!=0&&s[i]%2!=0)。
第2套上机操作题一、程序填空题【微答案】(1)t=i (2) i (3) '\0'或0【微分析】本题中第一个for循环的作用是得到字符串的长度,第二个for循环的作用是对下标为奇数的字符按ASCII码大小排序,最后将排好序的字符取出。
c上机考试试题# C上机考试试题一、单项选择题(每题2分,共20分)1. 下列关于C语言基本数据类型的说法中,错误的是()。
- A. `int` 类型通常用于表示整数- B. `float` 类型用于表示单精度浮点数- C. `double` 类型用于表示双精度浮点数- D. `char` 类型用于表示一个字符或整数2. 在C语言中,用于定义数组的关键字是()。
- A. `define`- B. `array`- C. `list`- D. `int[]`3. C语言标准输入输出使用的库函数是()。
- A. `<stdio.h>`- B. `<math.h>`- C. `<stdlib.h>`- D. `<iostream>`4. 下列哪个是C语言中的合法标识符?()- A. `class`- B. `case`- C. `2b`- D. `user_name`5. C语言中,用于实现字符串连接的函数是()。
- A. `strcpy()`- B. `strcat()`- C. `strlen()`- D. `strncpy()`6. 在C语言中,`printf` 函数的返回类型是()。
- A. `int`- B. `float`- C. `char`- D. `void`7. 下列关于C语言函数的描述中,错误的是()。
- A. 函数可以返回一个值- B. 函数可以没有返回值- C. 函数必须有返回值- D. 函数可以有多个返回值8. 在C语言中,用于计算两个整数的最大值的宏定义在哪个头文件中?()- A. `<math.h>`- B. `<stdlib.h>`- C. `<limits.h>`- D. `<stdio.h>`9. C语言中,`break` 语句的作用是()。
- A. 跳出整个循环- B. 跳出最近的一个循环- C. 跳出整个程序- D. 继续下一次循环10. 下列关于C语言结构体的描述中,错误的是()。
c语言上机试题库及答案1. 题目一:字符串翻转要求:编写一个C语言程序,实现字符串的翻转功能。
```c#include <stdio.h>#include <string.h>void reverseString(char *str) {int len = strlen(str);char temp;for(int i = 0; i < len / 2; i++) {temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[100];printf("Enter a string: ");scanf("%s", str);reverseString(str);printf("Reversed string: %s\n", str);return 0;}```2. 题目二:计算数组中的最大值要求:编写一个C语言程序,计算并输出一个整数数组中的最大值。
```c#include <stdio.h>int findMax(int arr[], int size) {int max = arr[0];for(int i = 1; i < size; i++) {if(arr[i] > max) {max = arr[i];}}return max;}int main() {int arr[] = {10, 45, 23, 67, 89, 34};int size = sizeof(arr) / sizeof(arr[0]);int max = findMax(arr, size);printf("The maximum value in the array is: %d\n", max); return 0;}```3. 题目三:实现二分查找要求:编写一个C语言程序,实现一个二分查找算法,查找一个有序数组中是否存在目标值。
c语言上机考试试题C语言上机考试试题在计算机科学领域中,C语言是一门非常重要的编程语言。
它的简洁性和高效性使得它成为了许多程序员的首选。
而在学习C语言的过程中,上机考试是不可或缺的一环。
本文将为大家提供一些常见的C语言上机考试试题,帮助大家更好地准备考试。
一、基础知识题1. 请简述C语言的特点和优势。
2. 什么是变量?请举例说明。
3. 请解释C语言中的数据类型,并列举一些常见的数据类型。
4. 请解释C语言中的运算符,并列举一些常用的运算符。
5. 请解释C语言中的控制语句,并列举一些常见的控制语句。
二、编程题1. 编写一个程序,要求用户输入两个整数,然后输出它们的和、差、积和商。
2. 编写一个程序,要求用户输入一个正整数N,然后计算并输出1到N的所有正整数的和。
3. 编写一个程序,要求用户输入一个字符串,然后判断该字符串是否是回文字符串(即正向和反向读都相同)。
4. 编写一个程序,要求用户输入一个正整数N,然后输出N的所有因子。
5. 编写一个程序,要求用户输入一个字符串,然后统计并输出该字符串中的字母、数字和其他字符的个数。
三、综合题1. 编写一个程序,要求用户输入一个正整数N,然后输出N的阶乘。
2. 编写一个程序,要求用户输入一个正整数N,然后判断该数是否为素数。
3. 编写一个程序,要求用户输入一个正整数N,然后输出N个斐波那契数列的元素。
4. 编写一个程序,要求用户输入一个字符串,然后将字符串中的所有小写字母转换为大写字母,并输出转换后的字符串。
5. 编写一个程序,要求用户输入一个正整数N,然后输出一个N行的等腰三角形。
通过以上的试题,我们可以看到,C语言上机考试试题涵盖了C语言的基础知识、编程技巧和综合应用。
在备考过程中,我们需要掌握C语言的特点和优势,了解各种数据类型和运算符的使用方法,熟练掌握控制语句的应用,同时还需要有一定的编程能力和逻辑思维能力。
在解答试题时,我们需要仔细阅读题目要求,理清思路,合理设计程序结构,注意变量命名规范,避免出现语法错误和逻辑错误。
C语言上机题练习1、编程实现:分别统计1—100之间的奇数和偶数之和,并将结果打印到屏幕上。
#include <stdio.h>main(){int i,s1=0,s2=0;for(i=0;i<=100;i++)if(i%2= =0)s1=s1+i;else s2=s2+i;printf(“偶数和为%d,奇数和为%d。
”,s1,s2);}2、编写程序实现:e=1+1/1!+1/2!+1/3!+……..计算前50项的和。
#include <stdio.h>main(){int i;double f=1,s=1;for(i=1;i<50;i++){f=f/i;s=s+f;}printf("sum=%lf",s);}3、打印50以后连续的7个素数。
#include <stdio.h>main(){int i=0,j=51,k;while(i<5){ for(k=2;k<j;k++)if(j%k==0)break;if(j==k){printf("%d ",j);i++;}j++;}}4、编写函数:根据整型形参n的值,计算如下公式的值。
1-1/2+1/3-1/4+1/5-1/6+1/7-……+(-1)n+1/n#include <stdio.h>/*请在此处编写fun函数*/double fun(int n){int i,f=1;double s=0;for(i=1;i<=n;i++){s=s+f*1.0/i;f=-1*f;}return s;}main(){int n;double sum;scanf("%d",&n);sum=fun(n);printf("sum=%lf",sum);}附加题:计算Fibonacci数列,直到某项大于1000为止,并输出该项的值。
二级C语言上机考试题库及答案1. 题目:编写一个C语言程序,实现输入一个整数,判断其是否为素数,并输出结果。
程序代码如下:```c#include <stdio.h>#include <math.h>int isPrime(int num) {if (num <= 1) return 0;for (int i = 2; i <= sqrt(num); i++) {if (num % i == 0) return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d 是素数。
\n", num);} else {printf("%d 不是素数。
\n", num);}return 0;}答案:该程序首先定义了一个判断素数的函数`isPrime`,它通过遍历2到`sqrt(num)`之间的所有整数,检查是否有能整除`num`的数。
如果找到,则`num`不是素数。
在`main`函数中,程序提示用户输入一个整数,然后调用`isPrime`函数判断该数是否为素数,并输出相应的结果。
2. 题目:编写一个C语言程序,实现一个简单的学生成绩管理系统,要求能够添加学生信息、查询学生信息、删除学生信息和显示所有学生信息。
程序代码如下:```c#include <stdio.h>#include <stdlib.h>typedef struct {char name[50];int score;} Student;Student students[100];int count = 0;void addStudent(const char* name, int score) {if (count < 100) {strcpy(students[count].name, name);students[count].score = score;count++;} else {printf("学生信息已满。
(完整版)C语言上机练习题及答案1输入三个整数x,y,z,把这三个数由小到大输出。
# includevoid main(){int x,y,z,a;scanf ("%d,%d,%d",&x,&y,&z);if(x>y) {a=x; x=y;y=a;}if(x>z) { a=x; x=z; z=a;}if(y>z) {a=y; y=z; z=a;}printf("%d,%d,%d\n",x,y,z);}2输入圆的半径,输出圆的周长和面积。
# include# define PI 3.1415926# define S ==PI*r*r# define V (4.0/3)*PI*r*r*rvoid main(){double r;printf("please input r:");scanf("%lf",&r);printf("area is %.4lf\n",S);printf("volume is %.4lf\n",V);}输入正方形的边长,输出正方形的周长和面积。
# includevoid main(){float c,zc,mj;printf("输入你的正方形");scanf("%f\n",&c);zc=4*c;mj=c*c;printf("周长%f,面积%f,边长%f",zc,mj,c);}3用格式输入函数输入3个字符,并用输出函数反向输出3个字符和他们的ASCII 码。
# includeint main(){char-ch1,ch2,ch3;printf("please input three characters:\n");scanf("%C%C%c",&ch1,&ch2,&ch3);printf("%c\n%d\n",ch3,ch3);printf("%c\n%d\n",ch2,ch2);printf("%c\n%d\n",ch1,ch1);}输入一个摄氏温度,要求输出华氏温度。
上机任务三答案
1.打开程序modi3_1.c,程序存在一个错误,请修改、运行并查看结果。
#include<stdio.h>
void main()
{
int a=5,c,b=3; 求余数运算%两边应为整型数据
c=a%b;
printf("%d\n",c);
}
2.打开程序modi3_2.c,程序存在一个错误,请修改、运行并查看结果。
(注意:除了错误行,其它行不得修改)
#include<stdio.h>
void main()
{
int a=5,c;
float b=3.0;
c=a%(int)b; 强制类型转换时,类型名一定要用括号括起来
printf("%d\n",c);
}
3.打开程序modi3_3.c,程序存在一个错误,请修改、运行并查看结果。
方法一:
#include<stdio.h>
void main()
{
int a=8,b=8,c;
在变量定义中“a=b=8”为非法赋值
c=a+b;
printf("%d\n",c);
}
或者
方法二:
#include<stdio.h>
void main()
{
int a,b,c;
a=b=8; 合法的赋值语句
c=a+b;
printf("%d\n",c);
}
4.打开程序modi3_4.c,程序要求输出1000和25000;程序存在两个错误,请
修改、运行并查看结果。
#include<stdio.h>
void main()
{
float a,b;
a=1e+3; 用指数形式表示时,尾数部分不能空,指数部分必须为整数
b=0.25e5;
printf("%f\n%f\n",a,b);
}
5.打开程序modi3_5.c,程序填空题,程序要求:从键盘上输入一个小写字母(用getchar函数),要求输出大写字母(使用putchar函数);请修改、运行并查看结果。
#include<stdio.h>
void main()
{
char ch;
ch=getchar(); /* Fill Blank */
putchar(ch-32); /* Fill Blank */
putchar('\n');
}
6.打开程序modi3_6.c,程序填空题,程序要求:输入华氏温度F,利用公式C=5/9*(F-32)转换成摄氏温度C,要求输出保留两位小数。
例如输入100,输出37.78 。
#include <stdio.h>
void main()
{float f,c;
scanf("%f",&f);
c=5.0/9*(f-32);
printf("%6.2f\n",c);
}
注意:温度转换公式不能写为5/9。
7.新建程序prog3_1.c,实现以下内容:从键盘上输入一个整数x,输出=1的值,例如:输入2,输出y=9.8。
+
x
y x+
e
#include<stdio.h>
#include<math.h> 注意:若要使用数学函数,必须包含数学函数库。
void main()
{
int x;
float y;
scanf("%d",&x);
y=1+exp(x)+sqrt(x);
printf("y=%.1f\n",y);
}
8.新建程序prog3_2.c,填空实现以下内容:从键盘上输入一个字母,输出字母表中该字母的下一个字母,例如输入“A”,输出“B”;再输入“Z”,观察结果。
#include <stdio.h>
void main()
{
char a;
a=getchar();
putchar(a+1);
putchar('\n');}
或者:
#include <stdio.h>
void main()
{
char a;
scanf("%c",&a);
printf("result:%c\n",a+1);
}
注意:字符型数据的输入输出控制符。