实验内容

1、输入下面的程序,分析其编译信息和连接信息,如果编译和连接无错误,则根据运行结果说明程序的功能。
# include<stdio.h>
void main()
{
printf("This is a c program..\n");
}
2、 输入下面的程序,分析其编译信息和连接信息,如果编译和连接有错误,请改正,然后根据运行结果说明程序的功能。
输入程序
#include<stdio.h>
void main()
{ int a,b,sum
a=123;b=456;
sum=a+b
print("sum is %d\n",sum);
}
3、输入并运行一个需要在运行时输入数据的程序,根据运行结果说明程序的功能。
#include<stdio.h>
void main()
{ int a,b,max;
printf("input a,b:");
scanf("%d,%d",&a,&b);
if(a>b) max=a;
else max=b;
printf("max=%d\n",max);
}
4、把上面程序的蓝字体部分代码写在同一行上,观察编译和连接有没有错误?
5、总结一下自己的体会,说说C源程序的特点?
附加题:
1、编程实现在屏幕上显示下列图形
  A
A  A
  A
2编程实现在屏幕上显示以下3行信息
*************
  Welcome
*************
实验结果与分析
1
如上图,该程序的作用是用于输出一下一行信息:This is a C program.
2错误分析:语句末没有用“;”表示结束,printf输成“print”。
改正:
#include<stdio.h>
void main()
{ int a,b,sum;
a=123;b=456;
sum=a+b;
printf("sum is %d\n",sum);
}
功能:如下图所示,该程序的作用是用于输出123456的和:579
3
功能:如上面两图可清晰看出,该程序的功能为:确定并输出开始随意输出的任意两个整数的较大值
4、编译时和连接时都没有错误,Visual C++中允许一行内写多个语句。
5c语言程序的特点:
1)语言简洁、紧凑,使用方便、灵活。C语言一共有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。
2)运算符丰富,共有34种运算符,C语言把括号、赋值、强制类型转换等都作为运算符处理,从而使C语言的运算类型极其丰富,表达式类型多样化。
3)数据类型丰富。C语言提供的数据类型有:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型等。
4)具有结构化的控制语句(如ifelse语句、while语句、dowhile语句、switch语句、for语句)。用函数作为程序的模块单位,便于实现程序的模块化。
5)语法限制不太严格,程序设计自由度大。
6C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
7)生成目标代码质量高,程序执行效率高。
8)用C语言编写的程序可移植性好(与汇编语言相比)。基本上不做修改就能用于各种类型的计算机和各种操作系统。
附加题:
1# include <stdio.h>
void main()
{
    printf(" A \n");
    printf("A A\n");
    printf(" A \n");
}
2
# include <stdio.h>
void main()
{
    printf("*************\n");
    printf("  Welcome  \n");
    printf("*************\n");
}
实验内容
1、
已知球的半径是2cm,编程计算球的表面积和体积(请用符号常量表示π的值)
2、 试编程输出整型中的short、int 、long,浮点型中float、double、long double等类型的字节长度和位长,输出格式如:long:4 byte 32 bit
3、 实验指导书P239(3)
请对照程序和运行结果分析:将一个负整数赋给一个无符号的变量,会得到什么结果
实验结果与分析
第一小题:
#define PI 3.14
#include<stdio.h>
void main()
{
  double r,S,V;
r=2;
S=4*PI*r*r;
V=4/3*PI*r*r*r;
printf("S=%f\n",S);
    printf("V=%f\n",V);
}
第二小题:
#include<stdio.h>
void main()
{
printf("short: %d byte %d bit\n",sizeof(short),8*sizeof(short));
printf("int: %d byte %d bit\n",sizeof(int),8*sizeof(int));
printf("long: %d byte %d bit\n",sizeof(long),8*sizeof(long));
printf("float: %d byte %d bit\n",sizeof(float),8*sizeof(float));
printf("double: %d byte %d bit\n",sizeof(double),8*sizeof(double));
printf("long double: %d byte %d bit\n",sizeof(long double),8*sizeof(long double));
}
第三小题:
#include<stdio.h>
void main()
{int a,b;
unsigned c,d;
long e,f;
a=100;
b=-100;
e=50000;
f=32767;
c=a;
d=b;
printf("%d,%d\n",a,b);
printf("%u,%u\n",a,b);
printf("%u,%u\n",c,d);
c=a=e;
d=b=f;
printf("%d,%d\n",a,b);
printf("%u,%u\n",c,d);
}
将一个负整数赋给一个无符号的变量,运行结果会出错,无符号变量只能取正数。
实验内容
(1)
输入并运行下面的程序:
#include <stdio.h>
void main ()
{char c1,c2;
c1='a';
c2='b';
printf("%c %c\n",c1,c2);
}
1 运行此程序。
2 在上面printf语句的下面再增加一个printf语句:printf(“%d %d\n”,c1,c2);再运行,并分析结果。
3 将第三行改为:int c1,c2;再使之运行,并观察结果。
4 再将第4、5行改为:
c1=a;/*不用单撇号*/
c2=b
  再使之运行,分析其运行结果。
5 再将第4、5行改为:
c1=”a”;/*用双撇号*/
c2=”b”
再使之运行,分析其运行结果。
6 再将第4、5行改为:
c1=00; /*用大于255的整数*/
c2=400;
再使之运行,分析其运行结果。
(2)输入并运行教材第3章习题3.6给出的程序:
# include<stdio.h>
void main ()
{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf(“a%c b%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c %c\n”,c4,c5);
}
在上机前先用人工分析程序,写出应得结果,上机后将二者对照。
(4)输入习题3.10。即:
# include<stdio.h>
void main ()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
1 运行程序,注意i、j、m、n各变量的值。分别做一下改动并运行:
2 将第6、7行改为:
m=i++;
n=++j;
再运行。
③程序改为:
#include<stdil.h>
void main()
{int I,j;
i=8;
j=10;
printf(“%d,%d\n”,i++,j++);
}
在③的基础上,将printf语句改为:
printf(”%d,%d,%d,%d\n”,I,j,i++,j++);
⑤再将printf语句改为
printf(”%d,%d,5d,%d\n”,I,j,i++,j++);
⑥程序改为:
void main()
{int i,j,m=0,n=0;
i=8;
j=10;
m+=i++;n-=--j;
printf("i=%d,j=%d,m=%d,n=%d\n",i,j,m,n);
}
(2) 要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre"。请编一程序,用赋初值得方法使c1、c2、c3、c4、c5这5个变量的值分别为 ‘C’、 ‘h’、 ‘i’、 ‘n’、 ‘a’,经过运算,使c1、c2、c3、c4、c5分别变为‘C’、 ‘h’、 ‘i’、 ‘n’、 ‘a’,并输出。
1 输入事先已编好的程序,并运行该程序。分析是否符合要求。
2 改变c1、c2、c3、c4、c5的初值为:’T’、’o’、’d’、’a’、’y’,对译码规律做如下补充:’W’用’A’代替,’X’用’B’代替,’Y’用’C’代替,’Z’用’D’代替。修改程序并运行。
3 将译码规律修改为:将一个字母被它前面第4个字母代替,例如 “E”用“A”代替,  “Z”用“U”代替, “C”用“Y”代替, “B”用“X”代替, “A”用“V”代替。修改程序并运行。
实验结果
1
1
2
结果分析:字符型数据和整型数据是通用的。
3
4)不能运行该程序。原因;字符常量必须用‘’表示,否则只能被看作标示符。
5'a'是字符常量,“a”是字符串常量,二者不同,不能把一个字符串常量赋给一个字符变量。
6)出现警告,运行结果如下:
原因:程序中将字符变量定义为unsigned char类型,这时其取范围为0-255。这时ab的取值均大于255,故出错。
2
3
1
2
3
4
5
6
5、
①程序设计如下:
# include<stdio.h>
void main()
{char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("password is %c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
②# include<stdio.h>
void main()
{char c1='T',c2='o',c3='d',c4='a',c5='y';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5-=22;
printf("password is %c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
③# include<stdio.h>
void main()
{char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=22;
c2-=4;
c3-=4;
c4-=4;
c5+=21;
printf("password is %c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
实验内容

1、实验指导书:P241-242:(1)①、②、③、④、⑦
2、实验指导书:P242:(3)
3、课本:P89:4.9
实验结果与分析
P241-242
(1)
#include <stdio.h>
void main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
a=61;b=62;
c1='a';c2='b';
d=3.56;e=-6.87;
f=3157.890121;g=0.123456789;
m=50000;n=-60000;
p=32768;q=40000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
②、运行结果:
#include <stdio.h>
void main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
a=61;b=62;
c1=a;c2=b;
f=3157.890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
运行结果:
#include <stdio.h>
void main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",
&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
运行结果:
#include <stdio.h>
void main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
scanf("%d,%d,%c,%c,%f,%f,%f,%f,%d,%d,%u,%u",
&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
从运行结果上看,f,g的值运行错误,因为输入的f,g的值已经超出了float值的范围,double型的数据应该用%lf输出,而long型与int型的数据存储长度一样,因此mn的值运行正确。
P242:(3)
#include <stdio.h>
void main()
{char c1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
putchar(c2);
}
课本:P89:4.9
程序为:
#include<stdio.h>
void main()
{float c,f;
printf("请在下面输入一个华氏温度:\n");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("摄氏温度为:%5.2f\n",c);
}
运行结果为:
实验内容
4、
自来水公司采取按月用水量分段计费的办法,居民应交水费y(元)与用水量x(吨)的函数关系式如下:
编写程序实现输入用水量x的值,输出应交水费y的值,结果保留两位小数。
5、 输入一个年份year,判断该年是否是闰年。判断闰年的条件是:能被4整除但不能被100整除,或者能被400整除。
6、 反复从键盘输入一批学生的成绩,累加后,最后输出平均分
4、从键盘读入一个整数,统计该数的位数。例如,输入54689,输出5;输入-54,输出2
实验结果与分析
1
#include <stdio.h>
void main()
{
    float x,y;
    scanf("%f",&x);
    if(x<0)
        y=0;
    else
        if(x<=15)y=(4.0/3.0)*x;
        else y=2.5*x-10.5;
    printf("x=%f,y=%5.2f\n",x,y);
}
2
#include <stdio.h>
void main()
{
    int year,leap;
    scanf("%d",&year);
    if((year%4==0&&year%100!=0)||(year%400==0))
        leap=1;
    else
        leap=0;
    if(leap)
        printf("%d 是闰年.\n",year);
    else
        printf("%d 不是闰年.\n",year);
c语言正确的字符常量
}
3
#include <stdio.h>
void main()
{float score,sum,average;
int i;
i=0;sum=0;
printf(" 请输入一批学生的成绩:");
while(scanf("%f",&score)&&score!=0)
{
    sum=sum+score;
    i=i+1;
}
printf("学生总分数sum=%.2f",sum);
printf("\n");
average=sum/i;
printf("这批学生的平均成绩为%.1f\n",average);
}
4
#include <stdio.h>
void main()
{
    long int a,b;
    int place,i=1;
    printf("请输入一个整数:");
    scanf("%ld",&a);
    b=a/10;
    while(b!=0)
    {
        i=i+1;
        b=b/10;
    }
    place=i;
    printf("该整数的位数是%d",place);
    printf("\n");
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。