C语言设计(本)阶段练习一
C语言程序设计练习题(含程序及参考答案)1

C语言练习题(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能一一验证,仅供参考使用)1、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。
#include <stdio.h>int fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写一个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运行后 a 中的值为8,b中的值为3。
#include <stdio.h>void fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。
C语言程序设计_第一阶段练习参考答案

江南大学现代远程教育第一阶段练习题考试科目:《C语言程序设计》第一章至第四章(总分100分)学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一单选题 (共20题,总分值40 ,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。
)1. 有以下程序main(){ int i=1,j=1,k=2;if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k);}执行后输出结果是()。
(2 分)A. 1,1,2B. 2,2,1C. 2,2,2D. 2,2,32. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是()。
(2 分)A. 6B. 0C. 2D. 13. 执行以下程序段后,变量a,b,c的值为()。
int x=11,y=10,a,b,c;a=(--x==y++)?--x:++y;b=x++; c=y; (2 分)A. a=10,b=10,c=9B. a=9,b=9,c=12C. a=9,b=9,c=11D. a=1,b=9,c=114. 以下程序的输出结果是用()表示。
main( ){ int k=17;printf("%d,%o,%x \n",k,k,k);} (2 分)A. 17,021,0x11B. 17,17,17C. 17,0x11,021D. 17,21,115. 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车> ,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()。
(2 分)A. scanf(“%2d%2d%2d”,&i,&j,&k);B. scanf(“%d %d %d”,&i,&j,&k);C. scanf(“%d,%d,%d”,&i,&j,&k);D. scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);6. 以下非法的赋值语句是()。
C语言程序设计_第一阶段练习参考答案

江南大学现代远程教育第一阶段练习题考试科目:《C语言程序设计》第一章至第四章(总分100分)学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一单选题 (共20题,总分值40 ,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。
)1. 有以下程序main(){ int i=1,j=1,k=2;if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k);}执行后输出结果是()。
(2 分)A. 1,1,2B. 2,2,1C. 2,2,2D. 2,2,32. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是()。
(2 分)A. 6B. 0C. 2D. 13. 执行以下程序段后,变量a,b,c的值为()。
int x=11,y=10,a,b,c;a=(--x==y++)?--x:++y;b=x++; c=y; (2 分)A. a=10,b=10,c=9B. a=9,b=9,c=12C. a=9,b=9,c=11D. a=1,b=9,c=114. 以下程序的输出结果是用()表示。
main( ){ int k=17;printf("%d,%o,%x \n",k,k,k);} (2 分)A. 17,021,0x11B. 17,17,17C. 17,0x11,021D. 17,21,115. 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车> ,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()。
(2 分)A. scanf(“%2d%2d%2d”,&i,&j,&k);B. scanf(“%d %d %d”,&i,&j,&k);C. scanf(“%d,%d,%d”,&i,&j,&k);D. scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);6. 以下非法的赋值语句是()。
C语言程序设计练习题(答案)

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 ”,表示不同意,将取消编译。
C语言程序设计_习题大全(含答案)

C语言程序设计_习题大全(含答案) C语言程序设计_习题大全(含答案)C语言程序设计是计算机科学与技术领域中非常重要的一门课程,对于学习和掌握程序设计的基本原理和方法具有重要意义。
在学习这门课程过程中,习题的练习和掌握是至关重要的一环。
本文将向大家介绍一份包含答案的C语言程序设计习题大全,帮助读者拓宽思路,加深对C语言程序设计的理解。
第一章:基础知识练习习题1:请编写一个C程序,输出"Hello, World!"。
答案:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```习题2:请编写一个C程序,将两个整数相加并输出结果。
答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("%d + %d = %d\n", num1, num2, sum);return 0;}```第二章:条件语句练习习题3:请编写一个C程序,判断某年份是否为闰年。
答案:```c#include <stdio.h>int main() {int year;printf("请输入年份:");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {printf("%d年是闰年\n", year);} else {printf("%d年不是闰年\n", year);}return 0;}```习题4:请编写一个C程序,判断用户输入的整数是否为正数、负数或者零。
《C语言程序设计》综合练习试卷(一)

《C语言程序设计》综合练习试卷(一)试题一判断题 (每题1分,共10 分)(用T表示正确、F表示不正确) 1.C的任何类型数据在计算机内部都是以二进制形式存储的。
2.按格式符“%d”输出float类型变量时,截断小数位后取整输出。
3.字符数组中字符串可以整体输入输出。
4.传值调用的形参只有在被调用时,才被创建(分配存储单元)。
5.C语言中数组名是指针常量。
6.结构体类型中的各成员项数据类型可以不相同。
7.函数必须有返回值,否则不能使用函数。
8.C程序执行总是从第一个函数开始。
9.可以用关系运算符对字符串进行大小比较。
10.For循环只能用于循环次数已确定的场合。
试题二单选题(每题1分共15分)从A)、B)、C)、D)四个选项中,选出正确的一项。
1.以下程序运行后,输出结果是#include"stdio.h"void main( ){ char s[10]="abcde",*p;p=s+2;printf("%s \n",p);}A) cde B)字符c的ASCII码值 C)字符c的地址 D)出错2.对下面函数f,写出f(f(3))的值。
int f(int x){ static int k=0;x+=k--;return x;}A) 5 B) 3 C) 2 D) 43.以下程序运行后,输出结果是#define PT 5#define S(x) PT*x#include"stdio.h"void main( ){ int a=1,b=2;printf ("%d\n",S(a+b));}A) 15 B) 7 C) 8 D) 无正确答案4. 若有 float a[3][4]; 正确的引用第3行第1列的元素是A) **(a+2) B) *(*a+2) C) a[3][1] D) a[3][0]printf("%.1f,%d\n",10./4,10/8);的输出是A) 2.5, 1.25 B) 2.5, 1 CA) int a[ ]; B)int n=5,a[n];C) int n, a[n]={1,2,3,4,5}; D) int a[10/2];7.若有定义:struct person { char name[9]; int age; } ;person st[10]={{"john",17},{"paul",19},{"Mary",18}};能输出字母M的语句是A) printf("%c",st[2].name);B) printf("%c",st[3].name[1]);C) printf("%c",st[2].name[1]);D) printf("%c",st[2].name[0]);8.不能把字符串:“Hello!”赋给数组b的语句是A) char b[10]={'H','e','l','l','o','!','\0'};B) char b[10];b="Hello!";C) char b[10];strcpy(b,"Hello!");D) char b[10]="Hello!";9.若有 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则表达式值为6的是A)*p+6 B)*(p+6) C)*p+=5 D)p+510. 已知:int *p,m=5, n; 正确的程序段是A) p=&n; scanf(" %d",&p); B) p=&n; scanf(" %d", *p);C) scanf("%d",&n); *p=n; D) p=&n; *p=m;11. 下面程序的运行结果是:#include"stdio.h"void main( ){ int x[4]={ 2,4,6,8},*p, **pp;p=x;pp=&p;printf("%d",*p);printf("%3d",**pp);}A) 4 4 B) 2 4 C) 2 2 D) 4 612.下面程序执行后a的值是#include"stdio.h"void main( ){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1!=&m;printf("%d\n",a);}A)4 B)1 C)0 D)运行时出错,a无定值13.下列语句序列中,能够将变量u、s中最大值赋给变量t的是A) if (u>s) t=u; t=s; B) t=s; if (u>s) t=u;C) if (u>s) t=s; else t=u; D) t=u; if (u>s) t=s;14. 若有 int a=7,b=12;则语句printf("%d",a&b);输出结果A) 19 B) 9 C) 5 D) 415.若有 FILE *fp; 以“只读”方式打开文本文件a:\aa.dat,下列语句中正确的是A) fp=fopen("a:\aa.dat","w");B) fp=fopen("a:\aa.dat","r");C) fp=fopen("a:\\aa.dat","w");D) fp=fopen("a:\\aa.dat","r");试题三阅读程序题( 每题4分,共24分)写出读下列程序的输出结果1. #include<stdio.h>void main(){ char ch;for(ch='a';ch<'f'; ch++){ putchar(ch-32);putchar(ch);}}2. #include"stdio.h"void main(){ int i;for( i=1;i<=4;i++){ if ((i%3)==0) { printf("$"); continue;} else printf("*");printf("#");}}3. #include "stdio.h"void main(){ int i;for(i=1;i<5;i++)switch(i%5){ case 5: printf(" 5");case 3: printf(" 3");case 1: printf(" 1");default: printf("%2d",i);}}4. #include"stdio.h"void main(){ int x[10];int t,i,j,m=1;for(i=0;i<10;i++){ m=-m;x[i]=m*i;}for(i=1;i<10;i++){ t=x[i];for(j=i-1; j>=0; j--)if(t>x[j]) break;else x[j+1]=x[j];x[j+1]=t;}for(i=0;i<10;i++) printf("%3d",x[i]);}5. #include<stdio.h>void main(){ void swap1(int x ,int y );void swap2(int *x,int *y);void swap3(int &x,int &y);int a1,b1,a2,b2,a3,b3;a1=a2=a3=10;b1=b2=b3=5;swap1(a1,b1);swap2(&a2,&b2);swap3(a3,b3);printf("a1=%d b1=%d\n",a1,b1);printf("a2=%d b2=%d\n",a2,b2);printf("a3=%d b3=%d\n",a3,b3);}void swap1(int x,int y){ int t;t=x;x=y;y=t; }void swap2(int *x,int *y){ int t;t=*x; *x=*y; *y=t; }void swap3(int &x,int &y){ int t;t=x; x=y; y=t; }6.struct node{int num;node *next;};int fun( node *h){ int s,n=0,i;node *p=h ;while(p!=NULL){ for(s=0,i=1;i<p->num;i++)if ((p->num)%i==0) s+=i;if (s==p->num) n++;p=p->next;}return n;}写出执行语句“printf(“%d\n”,fun(head));”的输出结果。
C语言程序设计习题集及答案

基础知识一单项选择题(每题2分,共44分)1以下叙述正确的是___。
A C 程序基本组成单位是语句BC 程序每一行只能写一个语句C 简单C 语句必须以分号作为结束符D 注释语句可以嵌套2一个C 语言程序是从___开始执行的。
A 程序中第一个函数B 名为main 的函数C 包含文件(头文件)的第一个函数D 程序中的第一个语句3请选出合法的C 语言赋值语句___。
A a=b=58B i++;C a=58,b=58D k=int(a+b);4下面标识符中,合法的用户标识符是___。
A 1abcB includeC a-b-c123D char 5以下所列的C 语言整形常量中,正确的是___。
A 0x10B 0976C 076LD 01ff 6C 语言中下列运算符的操作数必须为整型的是___。
A %B ++C /D =7设a 和b 均为int 型变量,则执行以下语句后的输出为___。
int a=20;int b=3;printf("%d\n ",a+=(b%=2));A 20B 21C 0D 238已知int i;,则执行语句i=2.6;后,i 的值为___。
A 2B 3C 2.6D 不确定9以下合法的字符常量为___。
A 'ab 'B '\482'C '\'D '\xaf '10若y 为int 型变量,则执行以下语句后,y 的值是___。
y=8;y+=y-=y*y;A 64B –56C –112D –4811以下合法的浮点型常量是___。
A e-3B 1.5e+2.4C 3.14e+2LD 3.14e +512设int 数据占用两个字节,float 数据占用四个字节,double 数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为___。
printf("%d ",sizeof(a*b)+2/5);A 4B 8C 6D 713设int 型占2个字节,且int i=-2;,则语句printf("%u ",i);的输出结果为___。
C语言程序设计练习一80306

《C语言程序设计》练习一一、单项选择题1.下面转义字符中,表示字符串结束的是()A.\ rB.\ nC.\ 0D.\ f2.在Turbo C2.0中,若定义unsigned int a;则变量a在内存中分配的字节数是()A.1个B.2个C.4个D.8个3.设有int x=2,y,z;执行z=y=x--;后,变量z的值是()A.0B.1C.2D.34.以十六进制形式输出整数的格式说明符是()A.%uB.%ldC.%xD.%o5.下面合法的if语句是()A.if(a=b) c++;B.if(a=<b) c++;C.ifi(a< >b) c++;D.if(a=>b) c++;6.结束while(表达式)循环的条件是()A.当表达式的值为0时B.当表达式的值不为0时C.当表达式的值为1时D.当表达式的值为非1时7.若有定义int a[3][5];则数组a在内存中占用的字节数是()A.8B.15C.16D.308.在C语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是()A.charB.floatC.longD.int9.若有说明:int *p,m=5,n;以下正确的程序段是()A.p=&n;B.p=&n;scanf(〃%d〃,n); scanf(〃%d〃,*p);C.scanf(〃%d〃,&n);D.p=&n;p=n; *p=m;10.变量的指针,其含义是指该变量的()A.值B.地址C.名D.一个标志16.结构体是C提供的一种专门处理彼此相互有联系,数据类型()A.不一致的多个数据的数据结构B.不一致的单个数据的数据结构C.一致的多个数据的数据结构D.一致的单个数据的数据结构11.下面列出的位运算符中,表示按位与操作的是()A.~B.&C.^D.|12.设有说明:int x=0x03,y=3;表达式x&~y的值是()A.0B.1C.2D.319.设有说明:int u=1,v=3,w=2;表达式(v>>1|u<<2)&w的值是()A.0B.1C.3D.513.设有说明:FILE *fp;char *filename=〃paper〃;对于fp=fopen(filename,〃rb+〃);语句,下面说法正确的是()A.打开名为filename的文件读写B.打开名为paper的文件读写C.打开名为filename的文件只读D.打开名为paper的文件只读114. 设有int a=3, b=-4, c=5;表达式(a<b)? a+b:(a-b,b+4,a-=b+4)的值是()A. –1B. 0C. 3D. 715. 若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是()(其中<CR>表示换行)int a, b;scanf(″a=%d b=%d″,&a, &b);A. 2<CR>B. a=2 b=3<CR>C. a=2, b=3<CR>D. 2,3<CR>3<CR>16. 下面程序段的输出结果是()main(){ int s, p;s=p=5;p=++s;p++; ++p;printf(″%d\n″,p);}A. 5B. 6C. 7D. 817. 下列if语句中,有语法错误..的是()A. if(x>y);B. if(x=y) x+y;C. if(x!=y) scanf(″%d″, &x) else scanf(″%d″,&y)D. if(x<y) {x++; y++;}18. 下面程序段执行后的输出结果是()int i=-1;if(i<=0) printf(″* * * * \n″);else printf(″%%%%\n″);A. ****B.%%%%C. %%%%cD. ****c19. 下面程序段的循环次数是()int k=2;while(k==0) printf(″%d″,k);k--; printf(″\n″);2A. 0次B. 1次C. 2次D. 无限次20. 下面程序段的输出结果是()a=100;while(a>120);a=a+1;printf(″%d″,a);A. 100B. 101C. 120D. 12121. 下面程序执行后,i的值是()main( ){ int a [5]={1,2,3,4,5},i=2printf(″%d″,a[i++]);}A. 1B. 2C. 3D. 422. 下面程序的输出结果是()main( ){ int i, x[3][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<4;i+=2) printf(″%d″, x[i][1]);}A. 5 1B. 5 2C. 8 2D. 9 323. 在C程序中,若用基本数据类型所定义的变量调用函数,正确的说法是()A. 由系统自动指定对应实参和形参是否共用存储单元B. 对应实参和形参各占一个独立的存储单元C. 对应实参和形参共用一个存储单元D. 可以由用户指定对应实参和形参是否共用存储单元24. 下面叙述中不.正确的是()A. 不同函数中可以使用相同名字的变量B. 形式参数是局部变量C. 在一个函数内部定义的变量只能在本函数范围内有效D. 在一个函数内部的复合语句中定义的变量在本函数范围内有效25. 设有语句int a[4][10],*p=*a;则下面表达式中属于地址表达式的是()A. a[1][2]B. a[1]C. *(p+1*10+2)D. *(a[1]+2)326. 下面定义不正确...的是()A. struct starB. struct star{ {int id int id;char *name; char *name;} star1={1001, ″Moon″}; }; star1={1001, ″Moon″};C. structD. struct star{ {int id; int id;char *name; char *name;} star1={123, ″Sun″}; } star1;27. 下面各个位运算符的优先级从左到右依次升高的是()A. | ^ & >>B. ^ >> & ~C. << | ^ ~D. ~ | & >>28. 设有说明:int u=1, v=14;表达式u+v>>2的值是()A. 0B. 3C. 5D. 729. 如果将文件指针fp指向文件末尾,正确的语句是()A. feof(fp);B. rewind(fp);C. fseek(fp,0L,0);D. fseek(fp,0L,2);30. 下面程序段中,不能..完成的功能是()FILE *fp;char ch =′v′;fp=fopen(″boy″, ″rb+″);fputc(ch,fp);A. 建立文件指针fp与文件boy的联系B. 从boy文件中读取一个字符C. 向boy文件中写一个字符D. 打开名为boy的二进制文件31.设有int a =3, b=-4, c=0;表达式((a>b)?a:b)&&c<0的值是()A.-4B.0C.1D.332.若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是()(其中<CR>表示换行)int a, b;scanf(″a=%d, b=%d″,&a,&b);4A.2<CR>B.a=2 b=3<CR>C.a=2, b=3<CR>D.2,3<CR> 3<CR>33.下面程序段的输出结果是()main( ){ int s, p;s=p=5;p=--s;p++;++p;printf(″%d\n″,p);}A.5B.6C.7D.834.关于if语句下面叙述正确的是()A.只有当if语句中表达式的值等于1时,才执行if的内嵌语句B.只有当if语句中表达式的值为假时,才执行if的内嵌语句C.只有当if语句中表达式的值等于0时,才执行if的内嵌语句D.只要if语句中表达式的值非0时,就执行if的内嵌语句35.若执行下面程序时,从键盘输入数据3和4,则程序的输出结果是()main( ){ int a,b,s;scanf(″%d″, &a,&b);s=a;if(a<b) s=bs=s*s;printf(″%d″,s);}A.9B.12C.16D.2536.若int x=0; 则while(x==0); 的循环次数是()A.0B.1C.2D.无限次37.下面程序段的输出结果是()for (i=1; i<3;i++){for (j=1;j<3;j++)printf(″%d ″, i+j);5printf(″\n″);}A.2 3 3 4B.2 3 4C.2 3D.23 4 3 438.下面程序的输出结果是()mian ( ){ int a[5]={2,4,6,8,10},i;i=2;printf(″%d″,a[i++]);}A.2B.4C.6D.839.下面程序的输出结果是()main( ){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int i,j,k=0;for(i=0;i<3;i++)k=k+a[i][0];printf(″%d\n″,k);}A.27B.33C.39D.4540.以下正确的函数定义形式是()A. double fun(int x, int y)B. double fun(int x; int y)C. double fun(int x, int y);D. double fun(int x, y);41.关于变量以下不正确...的说法是()A.在不同函数中可以使用相同名字的变量B.形式参数是全局变量C.在函数内定义的变量只在本函数范围内有效D.在函数内的复合语句中定义的变量是局部变量42.设有语句int a[4][10],*p=*a;则下列表达式中不是..地址表达式的是()A.&a[1][2]B.a[3]C.*(p+1*10+2)D.p+1*10+243.下面关于结构体类型变量定义不正确...的是()A. struct scoreB. struct{ {6int math; int math;int Chinese; int Chinese;}Li, Wang; }Li, Wang;C. struct scoreD. struct score{ {int math; int math;int Chinese; int Chinese;}; };Li, Wang;struct score Li, Wang;44.下面各个运算符的优先级从左到右依次降低的是()A.& >> | ^B.~ & >>|C.>> & ^ |D.~ >> & ^45.设有说明:int u=1, v=2;表达式:u+v<<2的值是()A.-1B.1C.9D.1246.下面程序段中,不.能完成的功能是()FILE *fp;char ch;fp=fopen(″file1″, ″rb+″);ch=fgetc(fp);A.建立文件指针fp与文件file1的联系B.从file1文件中读一个字符C.向file1文件中写一个字符D.打开名为file1的二进制文件47.在格式:fread(stu,size,n,fp);中,下面说法不正确...的是()A.stu是内存中存放数据的首地址B.n表示读n次C.size是一个数据块的字节数D.fp表示文件指针48.字符串常数“CHINA”在内存中存储时占的字节数是()A.5个B.6个C.7个D.8个49.如果a=1,b=2,c=3,d=4,则表达式a>b?a:c<d?c:d的值是()A.1 B.2 C.3 D.450.输出字符串的格式说明符是()78A .%cB .%sC .%uD .%g51.设有说明int x=0,y=0; 则执行if(x++)y=1+x;else y=2+x ; 后,变量y 的值是( ) A .0 B .1 C .2D .352.以下程序段所表示的数学函数关系是( ) y=-1if(x!=0) if(x>0) y=1;else y=0; A .⎪⎩⎪⎨⎧>=<-=)0(1)0(0)0(1x x x yB .⎪⎩⎪⎨⎧>=-<=)0(0)0(1)0(1x x x yC .⎪⎩⎪⎨⎧>=-<=)0(1)0(1)0(0x x x yD .⎪⎩⎪⎨⎧>=<-=)0(0)0(1)0(1x x x y53.执行下面程序段后,输出字符A 的个数是( ) for(i=0;i<=5;i+=2) printf(″A ″);A .0个B .3个C .5个D .6个54.若有定义char a[ ]= ″computer ″;则存储字符m 的数组元素是( ) A .a[1] B .a[2] C .a[3]D .a[4]55.若有定义int a [4]={1,2,3,4};则a[a[3]-a[1]*a[1]]的值是( ) A .1 B .2 C .3D .412.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( ) A .自动(auto ) B .静态(static ) C .外部(extern)D .寄存器(register )56.如果一个C 程序仅由一个源文件组成,则在一个源文件中定义的全局变量的作用域为( )A .源文件的全部范围B .本程序的全部范围C .本函数的全部范围D .从定义该变量的位置开始至本文件末尾57.下列定义中,不是..指针数组定义的是( ) A .int*p[5]; B .float*q[4]; C .int(*r)[6];D .char*w[7];58.若有语句int*point,a=4;和point=&a;下面代表地址的一组选项是( )A.a,point,*&a B.&*a,&a,*pointC.*&point,*point,&a D.&a,&*point,point59.下列程序的运行结果是()#difine N 9fun (char s[ ]){char*p=s+4,*q=s;int i;for(i=0;i<4;i+ +,p+ +,q + +){s[i]=*p;s[i+4]=*q}}main( ){char ss[N]= ″ABCDEFGH″;fun(ss)printf(″%s\n″,ss);}A.EFGHABCD B.EFGHEFGH C.ABCDEFGH D.ABCDABCD 60.设有结构体的定义如下:()struct cjd {long bh;int*q;char xm[9];};则sizeof(struct cjd)的值是A.14 B.15 C.16 D.1761.设有说明:int x=0x15,y=0x0f;则x&y的结果是()A.0x5 B.0x15 C.0xf0 D.0xf562.如果在程序中要使用系统提供的函数strlen,则需要书写的编译预处理命令是()A.#include<stdio.h> B.#include<math.h>C.#incLude<string.h> D.#incLude<malloc.h>63.由FILE*fp;fp=fopen(″a:\\abc.txt″,″r+″);可以推知fopen 函数的原型是()A.char *fopen(char,char);B.FILE*fopen(char*,char*);9C.int fopen (char*,char*); D.FILF fopen(char* ,char*);64.整数-2在机器内存中的表示是()A.1000000000000010 B.1111111111111110 C.11111111111111101 D.1111111111111111 65.下列运算符中优先级最低的是()A.> B.! C.% D.= =66.设有int a=3,b=-4,c=5;表达式+ +a-c+b+ +的值是()A.-6 B.-5 C.-4 D.-367.以十进制无符号形式输出整数的格式说明符是()A.%u B.%x C.%o D.%d69.下列程序段的输出结果是()void main(void){iny y=1,x=5;if(x<0)y=-1;if(x>=0)y=0;printf("%d\n",y);}A.-1 B.0 C.1 D.569.执行如下程序段后,x的值是()int x=1,y=-1;if(y<0)x-=y;else x+=y;A.-1 B.0 C.1 D.270.执行while(表达式)循环的条件是()A.当表达式的值为0时B.仅当表达式的值为1时C.当表达式的值非0时D.当表达式的值不为1时71.下列程序段输出的结果是()for(i=1;i<3;i+ +)for(j=1;j<3;j+ +)10printf("%d",i+j);A.2 3 3 4 B.2 3 4C.2 3 D.23 4 3 472.若有定义int s[4]={1,2,3,4};则a[a[2]-3*a[0]+1]的值是()A.1 B.2 C.3 D.473.下列关于C语言程序说法正确的是()A.C语言程序总是从有定义的函数起顺序执行B.在C语言程序中,被调用函数必须在main函数中定义C.C语言程序中的main函数必须放在程序的开始部分D.C语言程序总是从main函数起开始执行74.若有int a[ ]={1,2,3,4,5,6,7,8,9,10},且0≤i<10,则对数组元素地址正确表示的是()A.&a+1 B.&a+ + C.&a D.&a[i]75.下列关于结构体类型定义正确的是()A.struct ABC B.struct ABC{ {int a int a;char b char b;char*p char * p;} }C.struct ABC D.struct ABC{ {int a; int a,char b; char b,char * p; char *p,}; };76.下列位运算符中,表示按位异或操作的是()A.~ B.│C.^ D.&77.下列各个位运算符的优先级从左到右依次升高的是()A.>>│& ~B.│>> & ~C.│& >> ~D.~│& >>1178.设有说明:int u=1,v=3;则表达式u<<= v的值是()A.0 B.1C.3 D.879.如果文件存储的是数据在内存中存放的字节形式,则该文件是()A.ASCII文件B.文本文件C.二进制文件D.设备文件80.下列转义字符中,表示回车的是()A.\0 B.\n C.\r D.\f81.若定义double d;则d在内存中分配的字节数是()A.1个B.2个C.4个D.8个82.下列表达式中运算结果为3的表达式是()A.(-7)%4 B.7/4+2 C.7/4*4-4 D.8/3+8/3 83.设有int a=3,b=-4,c=5;表达式a++-c+b++的值是()A.-6 B.-5 C.-4 D.-384.在printf语句中,格式说明符u表示()A.以十进制带符号形式输出整数B.以十六进制带符号形式输出整数C.以十进制无符号形式输出整数D.以十六进制无符号形式输出整数85.若有int a=3,b=4,c=5,d=6,x=4;执行下列程序段后x的值是()if(a<b){if(c= =d)x=c;}elsex=d++A.4 B.5 C.6 D.71286.关于switch中的表达式,正确的说法是()A.它必须是算术表达式B.它必须是关系表达式C.它必须是逻辑表达式D.它可以是任意类型的表达式87.对do语句while(表达式);结构的循环,下列说法正确的是()A.当表达式的值为非零时不执行循环体B.循环体至少被执行一次C.当表达式的值为零时循环体一次也不执行D.循环体仅被执行一次88.只能在循环语句中用于结束本轮循环的语句是()A.break; B.continue; C.goto D.if89.若有定义int a[3][5];则数组a在内存中分配的字节数是()A.8 B.15 C.24 D.3090.已知strl和str2是字符串数组,下列哪一个函数能正确的完成字符串的输入?()A.gets(strl) B.gets(strl,str2) C.getchar(strl)D.getchar(strl,str2)91.下列关于函数的描述中正确的是()A.C程序中有调用关系的所有模块必须放在同一个源文件中B.函数必须有返回值,否则不能使用函数C.C程序必须由一个或一个以上函数构成D.C函数既可以嵌套定义又可以嵌套调用92.设有下列程序,则()int d=10;main(){int a=3;printf(“%d,%d\n”,a,d);}A.a是全局变量,d是全局变量B.a是局部变量,d是全局变量C.a是全局变量,d是局部变量D.a是局部变量,d是局部变量1393.若有说明:int*p1,*p2,m=5,n;以下进行赋值的语句中合理的是()A.p1=m; B.&p2=n; C.pl=&m;p2=p1; D.*p1=&m; 94.下列为指针数组定义的是()A.float(*)[6]; B.float p[6]; C.float(*)(); D.float *p[6]; 95.设有说明:FILE*fp;对于fp=fopen(″c:\\abc.dat″,″rb″);语句,下列说法中不正确的是()A.fp将指向abc.dat文件B.以只读方式打开二进制文件C.打开文件的文件名是abc.datD.以读写方式打开ASCII码文件96.ASCII码文件的结束可以用符号常量EOF表示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1–练习1(本)C 语言设计阶段练习一 (本科)(第1章——第5章)一、根据题目要求解答问题(1) 将数学式yx )y x (8log ⨯+转换成算术表达式。
答:lg(x+y)(2) 设:float x; 请分别写出描述实数 x 的小数部分和整数部分的算术表达式。
答:整数部分:(int)x 小数部分:x-(int)x(3) 用逻辑表达式描述下面函数的定义域。
3x x log )x (f -= 答: x>0 && x!=3(4) 写出整型变量x 界于整数a 、b 之间,但a 不一定小于b 的逻辑表达式。
答: x>abs(a) && x<abs(b)(5) 使用二进制位运算表达式,实现将x 变量清零。
答: x^x 或 x&(~x)(6) 用一个条件表达式改写下面的多边选择语句,功能不变。
if(a>0) x=1.6;else if(a>-10) x=3.3;else x=-5.2;答: x=a>0? 1.6 : x>-10?3.3 : -5.2二、阅读程序,写出运行结果,再上机调试验证。
(1) #include <stdio.h>main( ){ int x=29; char c=’B ’;printf("dec:%d,oct:%o,hex:%x,unsigned:%u\n",x,x,x,x);printf("ASCII:%c,dec:%d,oct:%o,hex:%x\n",c,c,c,c);printf("c='\%c\'\n",c+10);}答:dec:29,oct:35 , hex:1d ,unsigned:29ASCII:B ,dec:66, oct:102, hex:42c='L'(2) #include <stdio.h>#include <math.h>main( ){ int x,a,b,c;printf("input x:");scanf("%d",&x); /* 假设输入153 */a=x/100;b=(x-a*100)/10;c=x%10;if(x==pow(a,3)+pow(b,3)+pow(c,3))printf("%d is daffodil number!\n",x);elseprintf("%d isn't daffodil number!\n",x);}答: 153 is daffodil number(3) #include <stdio.h>main(){ int sum=0,a,b;do{ scanf("%d%d",&a,&b);switch(a){ case 1: sum+=b;break;case 2: sum-=b;break;}} while(a!=0);printf("sum=%d\n",sum);}假设程序运行时循环输入下列四组数据:1 1002 203 500 0答: sum=80(4) #include <stdio.h>main(){ int i=0,s=0;do{ if(i%2){ i++;continue;}i++;s+=i;} while(i<7);2–练习1(本)printf("%d\n",s);}答: 16三、阅读程序说明,在划线处填空,实现程序的预期功能。
1.以下程序接收从键盘输入的字符串直到按<Ctrl>+Z键为止,输入的字符被原样输出到屏幕上,但若有连续的一个以上的空格时只输出一个空格。
#include <stdio.h>main(){ char cx, found='\0';while(( cx=getchar )!=EOF) /* EOF代表按<Ctrl>+Z键 */{ if(cx!=' ')putchar(cx);if(cx==' '&& found!=‘’ )putchar(cx);found= cx ;}}2.循环输入整数直到输入0为止,逆序输出整数中的每一位数字。
例如,输入273,则输出3 7 2;输入-108,则输出8 0 1 -。
#include <stdio.h>#include <math.h>main( ){ int x; long num,t;scanf("%ld",&num);while( num!=0 ){ t=abs(num);do{ x= t % 10 ;printf("%d ",x);}while((t=t/10)>0);if(num<0) printf("-") ;scanf("%ld",&num);}}3.用switch结构编写程序,对输入的一个百分制成绩,输出成绩的等级:90分以上为A级,80-89分为B级,70-79分为C级,60-69分为D级,低于60分为E级。
#include <stdio.h>main( ){ int score;scanf("%d",&score);3–练习1(本)if(score<0 ||score>100 ){ printf("input error!");exit(0);}switch( score/10 ){ case 10:case 9: printf("A\n");break;case 8: printf("B\n");break;case 7: printf("C\n");break;case 6: printf("D\n");break;default: printf("E\n");}}4.下列程序的功能是打印用“奇数”构成的三角形,行数n由键盘输入。
若n为5时,程序将在屏中心输出如下形式的三角形图案。
13 57 9 1113 15 17 1921 23 25 27 29#include <stdio.h>main(){ int i,j,n,k;scanf("%d",&n);for(k=-1,i=1; i<=n ;i++){ for(j=1;j<=40;j++) /* 在每一行左端输出40个空格,使图形印在屏幕中心 */ printf("%c",' ');for(j=1; j<=2*i-1 ;j+=2)printf("%-4d", k=k+2 );printf("\n");}}四、程序改错根据题意,修改程序中的错误(每个程序有3个错误,#标识的为行号),使之能输出正确的结果。
请不要增行或删行,并以“# 正确内容”的形式写出正确答案。
1.以下程序的功能是找出一个大于给定整数 m 、而且紧随 m 的素数。
例如,设m=50,则程序输出素数53。
#1 #include <stdio.h>#2 main()#3 { int i, k, m;4–练习1(本)#4 scanf("%d",m);#5 for(i=m+1; ;i++)#6 { for(k=2; k<i; k++)#7 if(i%k=0) break ;#8 if(k<i) printf("%d\n",i) ;#9 }#10 }答: #4 scanf("%d",&m);#7 if(i%k==0) break;#8 if(k==i) printf("%d\n",i);2.以下程序的功能是猜商品的价格,当用户输入自己估计的价格后,程序判断其正确性,允许猜3次,当预估价与真实价的差值在10元以内就算才猜对。
#1 #include <stdio.h>#2 #include <math.h>#3 main()#4 { float price,value; int i=0;#5 printf("请主持人输入商品的实际价格\n");#6 scanf("%f",&price);#7 for(;;)#8 { i++;#9 if(i>3) printf("很遗憾,你输了!\n");#10 printf("请观众输入第%d次预估价:",i);#11 scanf("%f",&value);#12 if((value-price)>10)#13 if(value<price)#14 printf("低了!\n");#15 else#16 printf("高了!\n");#17 else#18 printf("恭喜你,猜对了!\n");#19 }#20 }答: #9 if(i>3){ printf("很遗憾,你输了!\n"); break;}#12 if(fabs(value-price)>10)#15 else if(value>price)5–练习1(本)。