C语言期末复习题
- C语言最简单的数据类型包括:整形,实型,字符型
- C语言中,运算对象必须是整数型的运算符是:取模%
- 关系式x<y<z,用C语言表示为(x<y)&&(y<z)
- C语言程序的基本单位是:函数
- C语言的程序一行写不下时,可以:在任意空格初换行
- 标识符由字母,数字和下划线组成且第一个字符必须为字母或下划线
- C语言中,字符型数据在内存中一ASCⅡ码形式存放
- 一个程序由若干个文件组成,共用同一变量,则此变量的储存类别应该为:extern
补充:auto 自动变量 register 寄存器变量 extern 外部变量 static静态变量
- 调用一个函数时,实参变量和形参变量之间的数据传递是==值传递==
- C语言中逻辑表达式的值为 0或1
- 若定于语句
int b[]={1,2,3,4,5}, *P = b;
则表达式*P++
的值是:1 - C语言不可以用关系运算符对字符组中的字符进行比较
- 进制考查
输出 8 10 16
- 单语句
printf("%d",NULL);
输出的结果是:0 - 若要求在if条件内表示a不等于0的关系,则能正确表达这一关系的表达式为:
a>0 ; a<0 ; !a ; a
- 若m,y,z均为int 型变量,则执行下面语句后m的值是
-
若a,b均为真,则a||b为真
-
逻辑运算符!比逻辑运算符||优先级高
-
int k=-1; printf("%d,%u",k,k);
输出的结果为 :-1,65535
补充输出格式用法:
%d int 有符号10进制整数
%u unsigned int 无符号10进制整数
%hd short 有符号10进制短整形
%hu unsigned short 无符号10进制短整形
%ld long
%lu unsigned long
%lld long long
%llu unsigned long long%o 有符号8进制整数
%x 无符号的16进制数字,并以小写abcdef表示
%X 无符号的16进制数字,并以大写ABCDEF表示
%f 输入输出为浮点型 (%lf双精度浮点型)
%c 输入输出为单个字符
%s 输入输出为字符串 -
能正确表达:当x的取值范围在
[1,10]
或[100,110]
内为真,否则为假的表达式是:(x>=1)&&I(x<=10)||(x>=100)&&(x<=110)
-
分享一个好习惯for循环条件中要循环几次直接
int i=0;i<n;i++
-
一个变量的指针就是:变量的地址
-
宏替换时,如果实参为表达式,应先求表达式的值,再替换
-
%m.nd中m表示最大场宽,n表示小数位数,整数位则为m-n-1位,够m位右对齐。%-m.nf可以控制输出左对齐
-
用高级语言编写的程序称之为:源程序
-
运行结果为:
- 计算表达式:
b=25/3%3
b的值为:2
程序编写
- 求出1000以为能被7或11整除,但不能被7或11同时整除的数,并存到数组a中
int main ()
{
int i,j=0;
int a[100];
for(i=1;i<1000;i++)
{
if((i%7==0)||(i%11==0)&&(!(i%7==0)&&(i%11==0)))
{
a[j++]==i;
}
}
}
- 用程序实现用于统计一行字符串的单词个数,单词之间用空格分隔
#include <stdio.h>
int main()
{
printf("输入一行字符:\n");
char ch;
int i,count=0,word=0;
while((ch=getchar())!='\n')
if(ch==' ')
word=0;
else if(word==0)
{
word=1;
count++;
}
printf("总共有 %d 个单词\n",count);
return 0;
}
- 用指针p输出p所指的数组元素后所有元素
#include <stdio.h>
int main()
{
int a[10]={6,1,3,2,5,7,9,11,62};
int i,j,*p;
p=a+4;
for(;*p!=0;)
{
printf("%d",*p++);
}
return 0;
}
- 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#include<stdio.h>
int main()
{
float h,s;
h=s=100;
h=h/2; //第一次反弹高度
for(int i=2;i<=10;i++)
{
s=s+2*h;
h=h/2;
}
printf("第10次落地时,共经过%f米,第10次反弹高%f米\n",s,h);
return 0;
}
- 打印菱形
先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
#include <stdio.h>
int main()
{
int i,j,k;
for(i=0;i<=3;i++) {
for(j=0;j<=2-i;j++) {
printf(" ");
}
for(k=0;k<=2*i;k++) {
printf("*");
}
printf("\n");
}
for(i=0;i<=2;i++) {
for(j=0;j<=i;j++) {
printf(" ");
}
for(k=0;k<=4-2*i;k++) {
printf("*");
}
printf("\n");
}
}
6.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
#include <stdio.h>
int main()
{
int i,t;
float sum=0;
float a=2,b=1;
for(i=1;i<=20;i++)
{
sum=sum+a/b;
t=a;
a=a+b;
b=t;
}
printf("%9.6f\n",sum);
}
- 求1+2!+3!+…+20!的和。
#include <stdio.h>
int main()
{
int i;
long double sum,mix;
sum=0,mix=1;
for(i=1;i<=20;i++)
{
mix=mix*i;
sum=sum+mix;
}
printf("%Lf\n",sum);
}
- 1000以内的水仙花数
#include <stdio.h>
int main(){
int a, b, c, i;
printf("水仙花输出");
for( i=100;i<1000;i++){
a=i/100;
b=(i-a*100)/10;
c=i%10;
if(i == a*a*a+b*b*b+c*c*c){
printf("\n \t%d ",i);
}
}
printf("\t");
return 0;
}