C语言程序设计课堂练习题7-9章-学生用2
- 格式:docx
- 大小:21.46 KB
- 文档页数:14
《C语言程序设计》练习题及答案1. 单选题1. 设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是A. p=1;B. *q=2;C. q=p;D. *p=5;正确答案:D2. 设有int x=11;则表达式(x++*1/3)的值是A. 3B. 4C. 11D. 12正确答案:A3. 下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));}A. 3B. 4C. 1D. 2正确答案:A4. sizeof(float)是A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式正确答案:B5. 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是A. a=20000+20000;B. a=4000*10;C. a=30000+10000;D. a=4000L*10L正确答案:D6. 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n"));A. 5B. 14C. 8D. 输出项不合法,无正常输出正确答案:A7. 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为A. 4B. 16C. 32D. 52正确答案:C8. 下面能正确进行字符串赋值操作的是A. char s[5]={"ABCDE"};B. char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};C. char *s;s="ABCDE";D. char *s;char a; scanf("%s",&s);正确答案:C9.以下程序的输出结果是#include "stdio.h"void reverse(int a[],int n){int i,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0;reverse(b,8);for(i=6;i<10;i++) s+=b[i];printf("%d\n",s);}A. 22B. 10C. 34D. 30正确答案:A10. 以下不正确的叙述是A. 在C程序中,逗号运算符的优先级最低B. 在C程序中,APH和aph是两个不同的变量C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值正确答案:D2. 多选题11. 以下______是正确的转义字符。
#include<stdio.h>struct student{int xuehao;char name[20];float yuwen,shuxue,yingyu,ave;};float aver(float yuwen,float shuxue,float yingyu){float y;y=(yuwen+shuxue+yingyu)/3.0;return y;}main(){struct student a;printf("Enter xuehao:\n");scanf("%d",&a.xuehao);printf("Enter name:\n");scanf("%s",&);printf("Enter yuwen:\n");scanf("%f",&a.yuwen);printf("Enter shuxue:\n");scanf("%f",&a.shuxue);printf("Enter yingyu:\n");scanf("%f",&a.yingyu);a.ave=aver(a.yuwen,a.shuxue,a.yingyu);printf("xuehao:%d name:%s yuwen:%f shuxue:%f yingyu:%f ave:%f\n",a.xuehao,,a.yuwen,a.shuxue,a.yingyu,a.ave);}/*练习9-6*/#include<stdio.h>struct student{int xuehao;char name[20];float yuwen,shuxue,yingyu,ave;};float aver(float yuwen,float shuxue,float yingyu){y=(yuwen+shuxue+yingyu)/3.0;return y;}main(){int i;struct student a;for(i=1;i<=100;i++){printf("请输入第%d个学生的信息:\n",i);printf("请输入学号:\n");scanf("%d",&a.xuehao);printf("请输入姓名:\n");scanf("%s",&);printf("请输入语文成绩:\n");scanf("%f",&a.yuwen);printf("请输入数学成绩:\n");scanf("%f",&a.shuxue);printf("请输入英语成绩:\n");scanf("%f",&a.yingyu);a.ave=aver(a.yuwen,a.shuxue,a.yingyu);printf("学号:%d 姓名:%s 语文:%f 数学:%f 英语:%f 平均分:%f\n",a.xuehao,,a.yuwen,a.shuxue,a.yingyu,a.ave);}}。
C语言程序设计练习题(答案)1.1上机实训项目实验1实验步骤1、进入VC环境从“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。
图1-1 VC集成环境的主菜单窗口2、VC环境下C程序的编辑、连接和运行(1)新建一个源程序①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。
如图1-2所示图1-2 选择新建② 在弹出的新建对话框中设置好相应的内容,如图2-2所示。
要事先准备好保存文件的目录,例d:\lx 目录。
在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C 语言程序的扩展名“.c ”。
设置好后,单击“OK ”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c 文件存放在D 盘的LX 目录下。
图1-3 新建对话框的设置③ 在图1-4的工作区中,输入源程序2.设置源程序的文件名,扩展名一定要为“.c ”且一定要输入扩展名1.单击该处3.设置存放目录图1-4 输入、编辑源程序④输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。
图1-5 保存源程序⑤源程序的编译如图2-6所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“编译example.c”(Compile example.c),或者单击工具栏上的“编译”按钮,如图1-6所示。
在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。
内容是“This build command requires an activeproject worksapce,Would you like to create a default project worksapce?”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No ”,表示不同意,将取消编译。
一、单项选择题(第192页)1-4.BDCC 5-8.AADA二、填空题(第194页)1. 12481632641282565122. ①a[age]++ ②i=18;i<263. ①break ②i= =84. ①a[i]>b[j] ②i<3 ③j<55. ①b[j]=a[j][0] ②b[j]=a[j][k]6.a[k++]=a[j]第8章一、单项选择题(第241页)1-5.BCCAA DDD 11-15.ACACB二、填空题(第243页)1.看不出原题的意图。
因为要计算1~n的累加和,n应是一个≥1的正整数。
可是题目中却出现了n=0的情况。
除非另加规定当n=0时1~n的累加和为0,或者把原题中的计算式改为计算0~n的累加和。
据此猜测,原题应填为:①return(0) ②return(n+sum(n-1))根据题意,如下程序较为合理:int sum(int n){if(n<=0)return(-1); /* -1是出错标志*/else if(n==1)return(1);else return(n+sum(n-1));}2. ①return(1) ②return(n*facto(n-1))第9章一、单项选择题(第276页)1-5. DCDAC ABC 11-15.AABBB 16-20.DCABD二、填空题(第278页)1.①int * ②*z3.①'\0' ②++4.①q=p+1 ②q<p+n ③*q>max ④*q<min第10章一、单项选择题(第326页)1-5. DDDAA 6-10.AABDC 11-14.CBDC二、填空题(第278页)1.①0x34 ②0x122.ARRAY a[10],b[10],c[10];3.①2 ②34.①ab ②cd5. ①b->day ②(*b).day6. ①ad ②abcdef ③ghimno ④hino7. ①type* ②!=’\n’③p=top8.++p19. ①( struct list *) ②( struct list *) ③return h。
目录第一章程序设计和C语言 (2)第二章最简单的C程序设计 (2)第三章选择结构程序设计 (4)第四章循环结构程序设计 (7)第五章数组 (11)第六章函数 (14)第七章指针 (18)第一章程序设计和C语言一、选择题:1.一个C程序的执行是从( )A、本程序的main函数开始,到main函数结束B、本文件第一个函数开始,到本文件的最后一个函数结束C、本程序的main函数开始,到本文件的最后一个函数结束D、本文件的第一个函数开始,到本文件的main结束2.以下说法不正确的是()A、一个C源程序可由一个或多个函数组成B、一个C程序必须包含一个main函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面3.C语言规定:在一个源程序中,main函数的位置()A、必须在开始B、必须在系统调用的库函数的位置C、可以任意D、必须在最后4.源程序program.c经编译产生的目标文件和连接后产生的可执行文件是( )A、program.bak和program.objB、program.obj和program.exeC、program.exl和program.cD、program.bak和prgram.exe第二章最简单的C程序设计一、选择题1.是合法的用户自定义标识符的( )A、ah-spksB、doubleC、<ctrl>D、_myapple2.以下正确的C语言标识符是()A、%xB、a+bC、a123D、test!3.以下不能定义为用户标识符的是( )A、V oidB、b_2C、intD、name4.以下选项中可作为C语言合法整数的是( )A、11010(B)B、0583C、x2b2D、0xafb5.VC++6.0中的短整型数值在计算机中占用的字节个数是( )A、1B、2C、3D、46.设short int型的数据长度为2个字节,则unsigned short 类型数据的取值范围是()P34A、均为2个字节B、0至65535C、-3276至32767D、-256至255 7.以下选项中可作为C语言合法常量的是()(指数E或e前必须有数字,后面必须有整数)A、-80.0B、-080C、-8e1.2D、-80.0e8.在VC++6.0编译环境下,下列式中,值不为4的表达式是()P34,double为8字节A、sizeof(unsigned long)B、sizeof(long)C、sizeof(unsigned int)D、sizeof(double)9.设有说明语句:char a=’\123’;则变量a( )一个ascii字符A、包含1个字符B、包含2个字符C、3个字符D、说明不合法10.设x为一数字字符,则其所对应的十进制数值为()。
一、C语言概述练习题选择1.一个C程序的执行是从。
A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。
A) 一个C源程序必须包含一个main函数B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是。
A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句D) C程序的每行中只能写一条语句4.一个C语言程序是由。
A)一个主程序和若干个子程序组成B) 函数组成C) 若干过程组成D) 若干子程序组成二、数据类型、运算符与表达式选择. 1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为。
x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 522.下列四组选项中,均不是C语言关键字的选项是。
A) define IF type B) getc char printfC) include case scanf D) while go pow3.下列四组选项中,均是不合法的用户标识符的选项是。
A) W P_0 do B) b-a goto int C) float la0 _A D) -123 abc TEMP4.下列四组选项中,均是合法转义字符的选项是。
A)‘\”’‘\\’‘\n’ B)‘\’‘\017’‘\”’ C)‘\018’‘\f’‘xab’ D)‘\\0’‘\101’‘xlf’5.下面不正确的字符常量是。
A) “c”B) ‘\\’’C) ‘’D) ‘K’6.以下叙述不正确的是。
A) 在C程序中,逗号运算符的优先级最低B) 在C程序中,MAX和max是两个不同的变量C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值7.以下叙述正确的是。
第9章结构【练习9-1】定义一个能够表示复数的结构类型,一个复数包括实数与虚数两个部分。
解答:struct complex{float real;float imaginary;};【练习9-2】人的出生日期由年、月、日组成,请在例 9-1 中的通讯录结构中增加一个成员:出生日期,用嵌套定义的方式重新定义该结构类型。
解答:struct date{int year;int month;int day;};struct student{int num;char name[10];struct date birthday;int computer,english,math;double average;};【练习9-3】例 9-1 中,如果要计算的是三门课程的课程平均成绩,应该如何改写程序?解答:#include<stdio.h>struct student{int num;char name[10];int computer,english,math;double average;};int main(void){int i, n;double math_sum,english_sum,computer_sum;struct student s1;printf("Input n:");scanf("%d", &n);printf("Input the student's number, name and course scores:\n"); math_sum=english_sum=computer_sum=0;for(i=1;i<=n;i++){printf("No.%d:",i);scanf("%d%s%d%d%d",&s1.num,,&s1.math,&s1.english,&pu ter);math_sum+=s1.math;english_sum+=s1.english;computer_sum+=puter;}printf("math_ave:%.2lf\nenglish_ave:%.2lf\ncomputer_ave:%.2lf\n", math_sum/n,english_sum/n,computer_sum/n);return 0;}【练习9-4】定义一个包含 5 名学生信息的结构数组,并对该结构数组的所有元素进行初始化。
#include<stdio.h>main(){int a[10],n,sum=0,i;float ave;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);sum=sum+a[i];}ave=1.0*sum/n;printf("ave=%.2f\n",ave);}/*练习7-2*/#include<stdio.h>main(){int a[10],n,i;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){printf("第%d个:\n",i+1);scanf("%d",&a[i]);printf("倒序:\n");while(a[i]!=0){printf("%d",a[i]%10);a[i]=a[i]/10;}printf("\n");}}#include<stdio.h>main(){int a[5],x,i,k=0;printf("enter 5 ge zheng shu:\n");for(i=0;i<5;i++)scanf("%d",&a[i]);printf("enter x:\n");scanf("%d",&x);for(i=0;i<5;i++)if(a[i]==x){printf("xia biao wei : %d\n",i);k=1;}if(k==0)printf("Not Found\n");}/*练习7-4*/#include<stdio.h>main(){int a[10],n,i,k=0,x,max;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);max=a[0];for(i=1;i<=n-1;i++)if(max<a[i]){max=a[i];k=i;}printf("max=%d xia biao=%d",max,k);x=a[n-1];a[n-1]=a[k];a[k]=x;printf("\n");for(i=0;i<n;i++)printf(" %d ",a[i]);printf("\n");}/*练习7-11*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;str[i]='\0';printf("再输入一个字符:\n");str[80]=getchar();for(j=0;j<=i-1;j++)if(str[80]==str[j])count++;printf("%c字符在字符串中出现的次数为:%d\n",str[80],count);for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}/*习题七1*/#include<stdio.h>main(){int x,y,n,a[10],i,min,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);min=0;for(i=1;i<n;i++)if(a[min]>a[i])min=i;max=0;for(i=1;i<n;i++)if(a[max]<a[i])max=i;x=a[min];a[min]=a[0];a[0]=x;y=a[max];a[max]=a[n-1];a[n-1]=y;for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七2*/#include<stdio.h>main(){int x,n,a[10],i,j,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=1;i<n;i++){ max=i-1;for(j=i;j<n;j++)if(a[max]<a[j])max=j;x=a[max];a[max]=a[i-1];a[i-1]=x;}for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七4*/#include<stdio.h>main(){int m,n,a[6][6],i,j,b[6]={0};printf("输入m:\n");scanf("%d",&m);printf("输入n:\n");scanf("%d",&n);printf("输入%d和%d的矩阵:\n",m,n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);b[i]=b[i]+a[i][j];}}printf("shu chu:\n");for(i=0;i<m;i++){for(j=0;j<n;j++)printf(" %d",a[i][j]);printf("\n");}printf("shu chu hang he :\n");for(i=0;i<m;i++)printf("%4d",b[i]);printf("\n");}/*习题7.6*/#include<stdio.h>main(){char str[80];int i,j;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("倒序输出:\n");for(j=i-1;j>=0;j--)putchar(str[j]);printf("\n");}/*新7.6*/#include<stdio.h>main(){int a[10],i,n;printf("输入整数n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);}printf("倒序输出:\n");for(i=0;i<n;i++){printf("%5d",a[n-1-i]);}printf("\n");}/*习题7.7*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出其中的大写辅音字母:\n");for(j=0;j<=i-1;j++)if(str[j]>='B'&&str[j]<='Z'&&str[j]!='E'&&str[j]!='I'&&str[j]!='O'&&str[j]!='U'){putchar(str[j]);count++;}printf("\n");printf("大写辅音字母数量为:%d\n",count);}/*习题7.8*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出相应交换后的字符串:\n");for(j=0;j<=i-1;j++)if(str[j]>='A'&&str[j]<='Z')str[j]=155-str[j];for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}上文已完。
C语言程序设计课堂练习题第7章指针一、选择题1.已知p是一个整型指针变量,且p指向的是整型变量a的地址,则下列哪个语句是错误的?()A.*p=a;B. p=&a;C.p=&*p;D.p=*&p;2.下列哪一项是不正确的字符串赋值或不正确的赋初值的方式?()A. char *str;str=“string“;B.char str[7]={‟s‟, ‟t‟, ‟r‟, ‟i‟, ‟n‟, ‟g‟ };C. char str1[10];str1= “string“;D.char str1[]=“string“,*str2=”1234567”;3.对于类型相同的指针变量,不能进行()运算。
A. +B. -C. =D.==4.已知p是一个整型指针变量,a为一个一维整型数组,且p=a;则下列哪个语句是错误的?()A.*p=a[0];B. *p=*a;C. p=a+1;D.p=*a;5.若有以下说明语句,则p2-p1的值为()int a[10],*p1,*p2;p1=a;p2=&a[5];A. 5B. 6C. 10D.没有指针与指针的减法6.下列定义中不正确的是()A.int *p;B. int p[10];C.int (*p)()D.int *(p(n));7.以下程序的输出结果是()main(){int a[]={1,2,3,4,5,6},*p;p=a;printf(“%d,%d\n”,*p,*(p+4));}A. 0,5B.1,5C.0,6D.1,68.若有以下说明和语句,且0<=i<10,则下面哪个不是对数组元素地址的正确表示()。
int a[]={1,2,3,4,5,6,7,8,9,10},*p,i;p=a;A.&(a+1)B.a++C. &pD.&p[i]二、写出程序的输出结果1.main(){int a=10,b=20,s,t,m,*pa,*pb;pa=&a;pb=&b;s=*pa+*pb;t=*pa-*pb;m=*pa**pb;printf“s=%d\nt=%d\nm=%d\n“,s,t,m);}2.int a[][3]={9,7,5,3,1,2,4,6,8};int i,j,s1=0,s2=0;for(i=0;i<3;i++)for(j=0;j<3;j++){if (i==j) s1=s1+a[i][j];if(i+j==2) s2=s2+a[i][j];}printf(“%d\n%d\n”,s1,s2);}3.main(){int a[5]={1,3,5,7,9},*p,**k;p=a;k=&p;printf(“%d”,*(p+2));printf(“%d”,**k);}4.main(){int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int (*p)[4],i=2,j=2;p=a;printf(“%d”,*(*(p+i)+j)+*((a+i)+j)+**(p+i)+**p);}三、填空1.在空格地方填上语句,以实现字符串复制的功能。
《C 语言程序设计》各章练习题2016年12月汇编第1—3章 C 语言基础、编程规范、顺序结构程序设计编程题1:设a 和b 均为int 型变量,编写一个程序,通过键盘读入a ,b 的值,然后交换a,b 的值。
要求屏幕显示“输入2个整数,用空格隔开”的提示语句,并且输出交换前a,b 的值,交换后a ,b 的值。
附加要求:(1)允许定义第3个变量,实现交换; (2)不允许定义第3个变量,实现交换。
第4章选择结构程序设计编程题2:根据下列函数关系写程序,要求提示输入x 的值,输出y 的值。
⎪⎪⎩⎪⎪⎨⎧>=<+-=0020212x x x x x y 编程题2:根据下列函数关系写程序,要求提示输入x 的值,输出y 的值。
⎪⎩⎪⎨⎧>≤≤--<=002222x x x x x y 编程题3:求 ax 2+bx+c=0方程的解.(只输出b 2-4ac 〉=0的求解结果,小于0,输出“不予求解!”)第5章 循环结构程序设计编程题4:编程计算∑=ni i 1。
要求提示键盘输入n ,如n 为负数,不予计算,直接返回。
编程题5:编程序计算n !,要求n 从键盘输入,如n 小于0,不予计算。
编程题6:从键盘输入一个数n,判断n 是否是素数。
编程题6:编写程序输出1~100之间的偶数,要求屏幕显示时5个偶数一行,每个数占5位,右对齐。
编程题7:编程计算100到1000之间有多少个数其各位数字之和是5,并将其输出。
编程题8:求满足下列条件的三位数n ,它除以11(整数相除)所得到的商等于n 的各位数字的平方和,且其中至少有二位数字相同的数。
编程题9:有一些十进制整数对ab 和cd 具有如下特性:ab×cd=ba×dc ,其中a≠b 且c≠d 。
如:12×42=21×24.请编程找出30~50之间满足上述等式所有m,n 值,并按上述等式的格式输出。
(×用*表示)编程题10:从键盘上输入一个整数,然后把这个整数的各位逆序输出.例如,输入123456,输出654321.第6章数组编程题11:有一个已排好序的数组int a[11]={-5,—3,0,6,8,12,16,28,66,88};,要求输入一个数后,按原来排序的规律将它插入数组中。
第七章习题参考答案一、选择题7.1 答案:C7.2 答案:C7.3 答案:D7.4 答案:C7.5 答案:D二、读程序回答问题7.6 答案:B7.7 答案:C7.8 答案:D7.9 答案:A7.10 答案:C7.11 答案:D7.12 答案:C7.13 答案:C三、编写程序7.14 参考源程序如下:/* 习题7.14参考源程序*/#include<stdio.h>int N1=50,N2=10;long add(int m){static long s=0;s=s+m;return(s);}long mul(int m){static long p=1;p=p*m;return(p);}main(){int i;long sum,product;for(i=1;i<=N1;i++)sum=add(i);printf("1+2...+%d=%ld\n", N1, sum);for(i=1;i<=N2;i++)product=mul(i);printf("1*2...*%d=%ld\n", N2, product);}7.15 求素数的算法比较简单,本题主要考察通过外部变量来传递数据。
参考源程序中使用两个外部变量分别来存放素数的个数和素数的和。
参考源程序如下:参考源程序如下:/* 习题7.15参考源程序*/#include<math.h>#include<stdio.h>int n=0;long sum;void count(int n1,int n2){int i,j;int k;int flag=1;for(i=n1;i<=n2;i++){k=sqrt(n2);for(j=2;j<=k;j++)if(i%j==0) {flag=0; break;}if(flag){n++; sum+=i;}flag=1;}}main(){int n1=10,n2=100;count(n1,n2);printf("%d prime numbers, total is %d\n",n,sum);}。
C语言程序设计第一、二章单项选择题1.将汇编语言编写的程序翻译成目标程序的程序是()A)解释B)编译C)汇编D)目标2.不属于面向机器语言的是()A)符号语言B)二进制语言C)3.A)解释B)编译C)汇编D)二进制4.不属于高级语言的是()。
5.A)D)分支结构6、CA7A、在main()函数中定义B、C语言程序总是从第一个定义的函数开始执行C、C语言程序中,main()函数必须放在程序的开始部分D、C语言程序总是从main()函数开始执行8、以下对C语言描述中正确的是()。
A、C语言源程序中可以有重名的函数B、C语言源程序中要求每行只能书写一条语句C、C语言源程序中,注释可以出现在任何位置D、最小的C源程序中没有任何内容9、对C语言源程序执行过程描述正确的是()。
A、从main()函数开始执行,到main()函数结束B、从程序的第一个函数开始执行,到最后一个函数结束C、从mainD、填空题1.2.3.4.用C C程序”,扩展名规定为“____”。
5.C OBJ”的____。
6.C____,才能"EXE"。
7、89.选择结构是____选择某个操作来执行的—种程序结构。
10.选择结构可以分为____、双分支结构和多分支结构。
11.循环结构又可分为当型循环、____及次数型循环。
第三章数据类型、运算符与表达式单项选择题1.以下程序的输出结果是。
main(){inta=10,b=10;printf("%d,%d",a--,++b);}A)10,11B)10,10 C)9,9D)9,112.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是A)'a'&&'b'B)a<=b3.设ch是char型变量,其值为4.main();}A)003B)012 C)103D)1125.字符串“\t\n\\\045\’”的长度为。
c语⾔程序设计教程(第2版)课后题及模拟题参考答案c语⾔程序设计教程(第2版)课后题及模拟题参考答案习题1 (4)1-1 填空题 (4)1-2 思考题 (4)1-3 编程题 (5)习题2 (6)2-1 单选题 (6)2-2 思考题 (6)习题3 (7)3-1 选择题 (7)3-2 填空题 (7)3-3 编程题 (8)习题4 (11)4-1单选题 (11)4-2填空题 (11)4-3 编程题 (11)习题5 (16)5-1单选题 (16)5-2填空题 (16)5-3 编程题 (16)习题6 (22)6-1单选题 (22)6-2填空题 (22)习题7 (25)7-1单选题 (25)7-2填空题 (25)7-3 编程题 (25)习题8 (26)8-1单选题 (26)8-2填空题 (26)8-3 编程题 (26)习题9 (30)9-1单选题 (30)9-2填空题 (30)9-3 编程题 (30)习题10 (38)10-1单选题 (38)10-2填空题 (38)10-3 编程题 (38)习题11 (41)11-1单选题 (41)11-2填空题 (41)习题12 (42)12-1单选题 (42)12-2 填空题 (42)实验1 熟悉Visual C++6.0可视化集成开发环境 (43)实验2 顺序结构程序设计 (43)实验3 选择结构程序设计 (43)实验4 循环结构程序设计 (44)实验5 函数 (47)实验6 数组 (54)实验7 指针 (58)实验8 结构体和共⽤体 (61)实验9 ⽂件 (63)实验10 综合编程 (64)模拟试卷(⼀)参考答案 (65)模拟试卷(⼆)参考答案 (67)习题11-1 填空题1. 函数2. 主函数main(),主函数main()3. 主函数main()4. 函数⾸部,函数体5. {, }6. /*, */7. 顺序结构,选择结构,循环结构8. .c, .obj, .exe1-2 思考题1. 结构化程序设计是指:为使程序具有⼀个合理的结构以保证程序正确性⽽规定的⼀套如何进⾏程序设计的原则。
《C语言程序设计》题库及答案C语言程序设计题库及答案C语言是一门广泛应用于计算机科学领域的编程语言,掌握其基本知识和技能对于计算机专业的学生来说至关重要。
为了帮助学生更好地掌握C语言程序设计,以下是一份题库及答案,供大家学习和参考。
一、基础知识1. C语言中,如何表示注释?答案:使用“//”表示单行注释,使用“/*...*/”表示多行注释。
2. 声明一个整型变量x,并将其初始化为10。
答案:int x = 10;3. 下列哪种数据类型不能存储整数?A. intB. floatC. charD. double答案:B. float4. 以下哪个关键字用于声明常量?A. constB. staticC. volatileD. extern答案:A. const5. 请写出C语言中的三种基本数据类型。
答案:整型、浮点型、字符型。
二、控制语句1. 请写出一个简单的if语句的语法格式。
答案:if (条件表达式) {// 执行代码}2. 以下哪个关键字用于跳出当前循环?A. continueB. breakC. returnD. goto答案:B. break3. 请写出一个for循环的语法格式。
答案:for (初始化表达式; 条件表达式; 更新表达式) { // 循环体代码}4. 请写出一个while循环的语法格式。
答案:while (条件表达式) {// 循环体代码}5. 请写出一个switch语句的语法格式。
答案:switch (表达式) {case 值1:// 代码break;case 值2:// 代码break;default:// 默认代码}三、函数1. 请写出一个函数的定义和声明的语法格式。
答案:定义:返回类型函数名(参数列表) {// 函数体代码}声明:返回类型函数名(参数列表);2. 下列哪个关键字用于在函数定义中声明形式参数?A. intB. externC. voidD. char答案:C. void3. 请写出一个函数返回两个整数的最大值。
9.4课后习题9.4.1项目练习一.练习目的1.进一步巩固结构体类型和共用体类型的定义与引川2.进一步复习链表的建立过程3.进一步巩固枚举类型的定义与枚举元索的引用方法二.练习内容1.用结构体变量表示平面上的一个点(横坐标和纵坐标),输入两个点,求两点Z间的距离。
#include "stdio.h"include "math.h"struct pin{float x;float y;}a,b;main(){printfC*请输入a点的横纵坐标:“);scanf("%f%f"/&a.x,&a.y);printfC'Xn");printf("请输入b点的横纵坐标scanf(,,%f%f"/&b.x,&b.y);printf("\n n);printff"输出a、b 两点之间的距离是:%f",sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));getch();}2.16个同学围成一-圈,从笫1个人开始按1、2、3的顺序报号,凡报到3者退出圈子。
找出最后昭在圈子中的人原来的序号。
ttinclude "stdio.h"#include "stdlib.h"#define LEN sizeof(struct game)struct game{int num;struct game *next;};struct game *creat(){ struct game *head,*p;head=p=(struct game *) malloc(LEN);p->num=l;int i=2;while(i<=16){ p・>next=(struct game *) malloc(LEN);p->next-:>nu m=i;i++;p=p->n ext; }p->next=head; return(head);} struct game *delete(struct game *head) { struct game*pl=head,*p2=head,*x; int k=l;while(pl->next!=pl) {if(k==3) {x=pl; pl=pl->next;p2・>n ext=pl; free(x); x=NULL; k=0;} else {P2=pl; pl=pl->next;}pl->next=NULL;return(pl);}void print(struct game *head){ struct game *p;p=head;while(p!=NULL) {printf("%d\t",p->num);p=p->n ext;}printfCAn");}main(){ struct game *pt,*p;pt=creat();p=delete(pt);print(p);free(p);getch();}3.建立一个链表,每个结点包含的成员为:职工号、工资。
c语言第九章题库及详解答案C语言第九章题库及详解答案一、选择题1. 下列哪个选项是C语言中的关键字?- A. `int`- B. `float`- C. `double`- D. `string`答案:A2. 在C语言中,哪个运算符用于计算两个数的乘积?- A. `+`- B. `-`- C. `*`- D. `/`答案:C3. 以下哪个语句是正确的C语言数组声明?- A. `int array[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};` - B. `int [10] array = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};` - C. `int array[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};`- D. 以上都是答案:D二、填空题1. 在C语言中,用于定义函数的关键字是______。
答案:void 或其他返回类型(根据函数定义)2. 以下代码段中,`printf`函数的返回类型是______。
```cint main() {printf("Hello, World!\n");return 0;}```答案:void三、简答题1. 请简述C语言中指针和引用的区别。
答案:在C语言中,指针是一个变量,它存储了另一个变量的内存地址。
指针可以被重新赋值为其他地址,并且可以通过指针来修改它所指向的变量的值。
而引用在C语言中并不存在,这是C++中的一个概念,它是一个别名,引用必须在定义时被初始化,并且不能被重新赋值为另一个变量的别名。
2. 解释C语言中的递归函数是如何工作的。
答案:递归函数是在其定义中调用自身的函数。
它通常用于解决可以被分解为相似子问题的问题。
递归函数工作时,首先检查是否有基本情况(base case),如果没有达到基本情况,它会进入递归调用,每次调用都会处理问题的一个更小的部分,直到达到基本情况,然后逐层返回结果。
C语言程序设计课堂练习题7-9章-学生用2C语言程序设计课堂练习题第7章指针一、选择题1.已知p是一个整型指针变量,且p指向的是整型变量a的地址,则下列哪个语句是错误的?()A.*p=a;B. p=&aC.p=&*p;D.p=*&p2.下列哪一项是不正确的字符串赋值或不正确的赋初值的方式?()A. char *str;str=“string“;B.char str[7]={?s?, ?t?, ?r?, ?i?, ?n?, ?g? };C. char str1[10];str1= “string“;D.char str1[]=“string“,*str2=”1234567”;3.对于类型相同的指针变量,不能进行()运算。
A. +B. -C. =D.==4.已知p是一个整型指针变量,a为一个一维整型数组,且p=a;则下列哪个语句是错误的?()A.*p=a[0];B. *p=*a;C. p=a+1;D.p=*a;5.若有以下说明语句,则p2-p1的值为()int a[10],*p1,*p2;p1=a;p2=&a[5];A. 5B. 6C. 10D.没有指针与指针的减法6.下列定义中不正确的是()A.int *p;B. int p[10];C.int (*p)()D.int *(p(n));7.以下程序的输出结果是()main(){int a[]={1,2,3,4,5,6},*p;p=a;printf(“%d,%d\n”,*p,*(p+4));}A. 0,5B.1,5C.0,6D.1,68.若有以下说明和语句,且0<=i<10,则下面哪个不是对数组元素地址的正确表示()。
int a[]={1,2,3,4,5,6,7,8,9,10},*p,i;p=a;A.&(a+1)B.a++C. &pD.&p[i]二、写出程序的输出结果1.main(){int a=10,b=20,s,t,m,*pa,*pb;pa=&apb=&bs=*pa+*pb;t=*pa-*pb;m=*pa**pb;printf“s=%d\nt=%d\nm=%d\n“,s,t,m); }2.int a[][3]={9,7,5,3,1,2,4,6,8};int i,j,s1=0,s2=0;for(i=0;i<3;i++)for(j=0;j<3;j++){if (i==j) s1=s1+a[i][j];if(i+j==2) s2=s2+a[i][j];}printf(“%d\n%d\n”,s1,s2);}3.main(){int a[5]={1,3,5,7,9},*p,**k;p=a;k=&pprintf(“%d”,*(p+2));printf(“%d”,**k);}4.main(){int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4],i=2,j=2;p=a;printf(“%d”,*(*(p+i)+j)+*((a+i)+j)+**(p+i)+**p);}三、填空1.在空格地方填上语句,以实现字符串复制的功能。
main(){char *ps=“C language“;char str[15];char *p1,*p2;p1=ps;p2=str;while(*p1!=?\0?){(1)(2)(3)}*p2=?\0?;printf(“ps=%s\n”,ps);printf(“str=%s\n”,str);}2.下面程序完成从键盘输入两个字符串a和b,再将a和b的对应位置字符中的较大者存放在数组c中,填空完成该程序。
int k=0;char a[80],b[80],c[80]={…\0?},*p,*q;p=a;q=b;gets(a);gets(b);while( (1) ){ if ( (2) ) c[k]=*p;else c[k]=*q;p++;(3)k++;}if(*p!=0) strcat(c,p);else strcat(c,q);puts(c);}3.完成下面程序,以实现单词的输出功能。
main(){char *s[]={“man”,”woman”,”girl”,”boy”,sister”};char **q;int k;for(k=0;k<5;k++){ (1) ;printf(“%s\n”,*q);}}4.下列程序完成截取字符串s中从第m个位置开始的n个字符,返回所截字符串的首地址。
static char sub[20];main(){int m,n;static char s[]=”good moring”;char *cut(char *s1,int m1,int n1),*p;scanf(“%d%d”,&m,&n);p=cut(s,m,n);printf(%s\n”,p);}char *cut(char *s1,int m1,int n1){int k;for(k=0;k<n1;k++)< p="">sub[k]= (1) ;sub[k]=?\0?;return (2) ;}5.下列程序求数组元素的平均值。
float f(int *p,int n){int i;float avg=0.0;for(i=0;i<n;i++)< p="">avg+=*p++;(1) ;return avg;}main(){int a[10]={1,2,3,4,5,6,7,8,9,10};float avg;avg=f( (2) ,10);printf(“\n A verage=%f\n”,avg);}6.下列程序完成3个操作。
(1)输入10个字符串(每串不多于9个字符),依次放在a数组中,指针数组str中的每个元素依次指向每个字符串的开始。
(2)输入每个字符串。
(3)从这些字符串中选出最小的那个串输出。
main(){char a[100],*str[10],*sp;int i,k;sp=a;for(i=0;i<10;i++){scanf(“%s”,sp);str[i]= ;k=strlen(sp);sp+= ;}k=0;for(i=0;i<10;i++)if (strcmp(str[i],str[k]) ) k=I;;}7.下面程序把数组元素按相反的顺序进行存放。
void inv(int *x,int n){ int *i,*j,t;for(i=x,j=x+n-1; (1) ;i++,j--){t=*i;*i=*j;*j=t;}}main(){int i,a[10]={3,7,9,11,0,6,7,5,4,2};printf(“The old array is:\n”);for(i=0;i<10;i++)printf(“%-6d”,a[i]);printf(“\n”);(2) ;printf(“after reveser:\n”);for(i=0;i<10;i++)printf(“%-6d”,a[i]);printf(“\n”);}8.用指针法求出数组中的最大元素与最小元素。
int max,min;void max_min_value(int array[],int n){int *p;(1) ;for( (2) ;p<array+n;p++)< p="">if(*p>max)max=*p;elseif (*p<min)< p="">min=*p;}main(){int i,number[10],*p;p=number;printf(“input 10 number:\n”);for(i=0;i<10;i++,p++)scanf(“%d”,p);(3) ;max_min_value(p,10);printf(“max=%10d min=%d\n”,max,min);}9.把字符串按从小到大的顺序输出。
void sort( (1) ,int n){int i,j,k;char *temp;for(i=0;i<=n-1;i++){ k=i;for(j=i+1;j<=n;j++)if ( (2) ) k=j;if(k!=i) {temp=name[i];name[i]=name[k];name[k]=temp;} } }void print(char *name[],int n){int i;for(i=0;i<n;i++)< p="">printf(“%s\n”, (3) );}main(){char *name[]={“Nanhua”,”Central South”,”HuNan”,”HuBei”};sort(name,4);print(name,4);}四、编程题1.有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数)凡报到3的人退出圈子,问最后留下的那位是原来的第几号。
2.输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少?3.输入一个字符串,内有数字和非数字字符,如:a123x456=4567?45at587将其中连续的数字作为一个整数,依次存放到数组a中。
例如:123存放在a[0],456存放在a[1]……统计共有多少个整数,并输出这些数。
第9章结构和其他数据机制一、选择题1.有定义如下:struct sk{ int a;float b;}data,*p;如果p=&data则对于结构体变量data的成员a的正确引用是()。
A.(*).data.aB.(*p).aC.p->data.aD.p.data.a2.已知:struct st{ int n;struct st *next;};static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p; 如果下述语句的显示是4,则对指针p的赋值是()。
printf(“%d”,++(p->next->n));A.p=&a[0];B. p=&a[1];C. p=&a[2];D. p=&a[3];3.已知:struct{ int k;char c;float a;}test;则sizeof(test)的值是()A.4B. 5C. 6D. 74.若有以下定义和语句:union data{ int k;char c;int n;则以下语句正确的是()A.a=5B. a={2,?a?,1.2}C. printf(“%d\n”,a)D.n=a;5.已知:struct sk{ int a;int age;}data,*p;如果要使指针p指向data中的成员a,正确的赋值语句是()A.p=(struct sk*)&data.aB.p=(struct sk *)data.a;C.p=&data.aD.p=data.a;6.已知enum week {sun,mon,tue,wed,thu,fri,sat} day;则正确的赋值语句是()A.sun=0;B. sat=day;C. sun=mon;D.day=sun;7.下面程序的运行结果是()main(){struct cmplx{ int x;int y;}cnum[2]={1,3,2,7};printf(“%d\n”,cnum[0],y/cnum[0].x*cnum[1].x);A. 0B. 1C. 3D.68.设有如下定义()struct sk{ int n;float x;}data,*p;若要使p指向data中的n域,正确的赋值语句是()A.p=(struct sk*)&data.nB.p=(struct sk *)data.n;C.p=&data.nD.*p=data.n;9.以下对结构体变量stu1中成员age的非法引用是()struct student{ int age;int num;}stu1,*p;p=&stu1A. stu1.ageB.student.ageC.p->ageD.(*p).age10.以下scanf函数调用语句中对结构体变量成员的不正确引用是()struct pupil{ char name[20];int age;int sex;p=pup;A.scanf(“%s”,pup[0].name);B. scanf(“%d”,&pup[0].age);C. scanf(“%d”,&(p->sex));D. scanf(“%d”,p->age);二、填空题1.下面程序的功能是输入学生的姓名和成绩,然后输出。