实验一:
1.1. 输入并运行下面的程序,把答案填写在红括号中。
#include    // 第1行
main( )        // 第2行
{              // 第3行
char c1,c2;    // 第4行   
c1=’a’;      // 第5行     
c2=97;      // 第6行 
printf("%c %c \n",c1,c2);      // 第7行 
}
⑴运行此程序,其输出结果是:(      )
为什么c2输出结果是字符?请写出原因:
(                        )
⑵在上面printf语句的下面再增加一个:
printf("%d %d \n", c1,c2);  // 第8行
再运行,其输出结果是:(      )
为什么c1输出结果是数字,写出原因:
(                        )
答案:1、⑴(  a a  )(    因为97对应的ASCII码为a    )
(2) (  97 97      ) (  因为%d代表的含义是以整型格式打印    )
2、有以下定义:
int  c1;       
则c1=3/4*4+4; 语句执行完毕后c1=(          )
答案: 4
3、有以下定义:
int  c1;       
则c1=7-4%3/3; 语句执行完毕后c1=(          )
答案:7
4、有以下定义:
float  c1;   
则c1=3.14/2+4.3-(int)2.9; 语句执行完毕后c1=(          )
答案: 3.870000 
5、有int  i=3, j=2; 则
j=1.5/j+i++; 之后j=(  )  .
答案:3
实验二:
1.验证VC6中函数参数的求值顺序。
在VC6中输入以下程序,按要求完成相关问题。
#include "stdio.h"
void main( )
{  int i,j;
i=3;
printf("%d, %d \n",i ,++i);
}
以上程序,你分析的运行结果是:
(                                        )
实际的运行结果是:
(                                        )
如果你的分析有错误,请写出你出错的原因:
(                                        )
总结VC6对于函数参数的求值顺序是:
(                                        )
答案:4,4  从右向左
2、用下面的scanf函数输入数据,使输出内容为a=3,b=7,x=8.00,y=71.82,c1=’A’,c2=’a’.请把键盘上输入过程写在下面。
#include "stdio.h"
main()
{
int a,b;
float x,y;
char c1,c2 ;
scanf(” a=%db=%d”,&a,&b) ;
scanf(” %f%e” ,&x,&y);
scanf(” %c%c” ,&c1,&c2);
printf(” a=%d,b=%d,x=%.2f,y=%5.2f,c1=%c,c2=%c\n”,a,b,x,y,c1,c2) ;
}
答案:a=3
b=7
8
71.82
A
a
3、假如我国国民生产总值的年增长率是9%,编程计算10年后我国国民生产总值与现在比增长多少百分比,计算公式为:
p=(1+r)n
其中r为年增长率,n为年数,p为与现在相比的倍数。把正确的程序写在下面。
答案:3、
#include "stdio.h"
#include "math.h"
void main()
{
double  p,r,n,i;
r=0.09,n=10,p=1;
p=(pow((1+r),n)-1)*100;
printf("%f%%\n",p);
}
4、已知华氏温度(f)与摄氏温度(C)的转换关系为:
C=5.0/
9*(F-32)
从键盘输入华氏温度,输出其对应的摄氏温度。
答案:#include "stdio.h"
main()
c语言数组最大值最小值
{
float C,F;
scanf(“%f”,&F);
C=5.0/9*(F-32);
printf(“%.2f\n”,C);
}
5、从键盘输入圆的半径和圆柱的高,计算圆球的体积和圆柱体表面积。编程实现之。
答案:#include "stdio.h"
int main()
{
float r,h,v,s ;
printf("请输入圆柱底面圆的半径:");
scanf("%f",&r);
printf("请输入圆柱的高:");
scanf("%f",&h);
v=4.0/3*3.14*r*r*r;
s=2*3.14*r*h+2*3.14*r*r;
//s=6.28*r*(h+r);
printf("圆球的体积为%f,圆柱体表面积为 %f \n",v,s); 
return 0;
}
实验三:
1、关系算术逻辑运算符的优先级是:(                    );
当int a=3,b=4,c=5,x=0,y=1;时,求以下表达式的值:
(1)  a+b>c && b==c
你认为的结果是(      ),计算机计算的结果是(      )
若你的结果错,分析你的错误原因并写在下边:
(                                            )
(2)  !(a>b) && !c || 1
你认为的结果是(      ),计算机计算的结果是(      )
若你的结果错,分析你的错误原因并写在下边:
(                                            )
(3)  !(x=a) && (y=b) && 0
你认为的结果是(  ),计算机计算的结果是(    )
若你的结果错,分析你的错误原因并写在下边:
(                                            )
答案:(1)0(2)1 (3)0
2、(习题4.8) 输入一个百分制成绩,要求输出成绩等级:>89:A级, 80~89:B级,60~79:C级,其它:D级; 把调试正确的程序写在下面。
答案:2、
#include “stdio.h”
void main()
{
int s;
scanf("%d",&s);
if  ( s>89)
printf("A");
else
if    (s>79)
printf("B");
else
if    (s>59)
printf("C");
else
printf("D");
}
3、(习题4.9)给一个不多于5位数的正整数,要求:
(1) 求出它是几位数;
(2) 分别输出每一位数字;
例如:输入120,则输出为:120是3位数,百位:1,十位:2,个位:0
答案:3、(1)
#include “stdio.h”
void main()
{
int s;
scanf("%d",&s);
if  ( s>9999)
printf("五位数");
else
if    (s>999)
printf("四位数");
else
if    (s>99)
printf("三位数");
else
if    (s>9)
printf("二位数");
else
printf("一位数");
}
(2)
#include "stdio.h"
int main(int argc, char* argv[])
{
int s;
scanf("%d",&s);
if  ( s>9999)
{
printf("%d是五位数.",s);
printf("万位是%d,",s/10000);
printf("千位是%d,",s%10000/1000);
printf("百位是%d,",s%1000/100);
printf("十位是%d,",s%100/10);
printf("个位是%d,",s%10);
}
else
if    (s>999)
{
printf("四位数");
printf("千位是%d,",s%10000/1000);
printf("百位是%d,",s%1000/100);
printf("十位是%d,",s%100/10);
printf("个位是%d,",s%10);
}
else
if    (s>99)
{printf("三位数");
printf("百位是%d,",s%1000/100);
printf("十位是%d,",s%100/10);
printf("个位是%d,",s%10);
}
else
if    (s>9)
{printf("二位数");
printf("十位是%d,",s%100/10);
printf("个位是%d,",s%10);
}
else
{printf("一位数");
printf("个位是%d,",s%10);
}
return 0;
}
4、从键盘输入三角形三边长,若三边不符合成为三角形条件,则输出错误提示,否则输出三角形面积。
答案:
#include
#include
intmain()
{
floata,b,c,p,s;
floata1,a2,a3;
printf("请输入三条边的长度,以空格隔开\n");
scanf_s("%f%f%f",&a,&b,&c);
p=(a+b+c)/2;
a1=p-a;
a2=p-b;
a3=p-c;
s=sqrt(p*a1*a2*a3);
if(a+b>c)
{
if(b+c>a)
{
if(a+c>b)
{
printf("三角形的面积s=%f\n",s);
}
else
printf("你输入的三个数字不能组成三角形\n");
}
else
printf("你输入的三个数字不能组成三角形\n");
}
else
printf("你输入的三个数字不能组成三角形\n");
}
实验四:
1.编程从键盘输入两个正整数,求两数的最小公倍数。把调试正确的源代码写在答案中。
答案:1
#include "stdio.h"
main()
int a,b,i;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
for(i=a;i  {
if(i%a==0 && i%b==0)
{
printf("最小公倍数是%d",i);
break;
}
}
}
2.输出所有的水仙花数,所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153是一个水仙花数,因为153=13+53+33。
把调试正确的源代码写在答案中。
答案:2.
#include "stdio.h"
main()
{  int b,s,g,x;               
for(x=100;x<1000;x++)
{
b=x/100;
g=x%10;
s=x/10%10;
if(x==b*b*b+g*g*g+s*s*s)
printf("%d\n",x);
}
}
3、相传韩信智商极高,有一次带兵1500人与敌人开战,战后死四百多人,但是具体数目不清楚,
为了清点人数,韩信命士兵站3人一排,多出2人;站5人一排,多出3人;站7人一排,多出2人。
韩信掐指一算就知道了剩下多少兵。请用计算机算一下共有多少兵?把调试正确的源代码写在答案中。
答案:3
#include "stdio.h"
main()
{  int x;               
for(x=1000;x<1100;x++)
{
if(x%3==2&&x%5==3&&x%7==2)
printf("%d\n",x);
}
}
4.根据输入的数n来决定输出三角形图案的大小(习题5.16),当n=4时输出效果入下图所示:
要求必须用两重循环结构编写程序。                 
***
*****
*******
把调试正确的源代码写在答案中。
答案:#include "stdio.h"
main()
{  int i,j,x;         
printf("请输入三角形高度:");   
scanf("%d",&x);
for(i=
1;i<=x;i++)
{
for(j=1;j<=x-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
实验五:1.已知求两个正整数的最大公约数的程序可能如下所示:运行此程序,验证程序的正确性,把错误全部改正后,把调试正确的源代码写在答案中。
#include "stdio.h"
main()
{    int m,i                 
scanf("%d,%d,m,n");       
i=m;
while(!(n%i==0 || m%i=0));
{  i--  }               
printf(“%d”,&i);           
}
答案: int main()
{
int m,n,i;                 
scanf("%d,%d",&m,&n);       
i=m;
while(!(n%i==0 && m%i==0))
{  i--;  }               
printf("%d\n",i);   
}
2.某电文加密方法如下:把字母a变成e,即变成其后第第4个字母,w变成a,x变成b,y变成c,z变成d。其它内容不变,请编程实现从键盘输入一串字符(以回车符结尾),将其按以上方法加密后输出。把调试后的正确源程序写在答案中。
答案:int main()
{
char ch;
while((ch=getchar())!='\n')
{  //scanf("%c",&ch);
if(ch>='a'&&ch<='z')
{
ch=ch+4;
if(ch>'z')
{ ch=ch-26;
}
}
printf("%c",ch);
}
printf("\n");
}
3.根据输入的数n来决定输出菱形图案的大小,当n=4时输出效果入下图所示:要求必须用两重循环结构编写程序。把调试正确的源代码写在答案中。
*
***
*****
*******
*****
***
*
答案:int n,i,j;
printf("输入一个正整数n:");
scanf("%d",&n);
for(i=1;i
{
for(j=0;j<=n-i;j++)
{printf(" ");}
for(j=1;j<=2*i-1;j++)
{printf("*");}
printf("\n");
}
for(i=1;i<=n;i++)
{
for(j=0;j<=i-1;j++)
{printf(" ");}
for(j=1;j<2*(n-i+1);j++)
{printf("*");}
printf("\n");
}
实验六:
1、输入10个数,出其中最大数的序号并输出序号和这个最大值。
1.
#include "stdio.h"
main()
{
int i,j,k,m,a[10];
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
for(j=0;j<=10;j++)
{
if(a[j]>a[j+1])
k=a[j];
else
k=a[j+1];
}
for(m=0;m<=9;m++)
{
if(k==a[m])
printf("最大数序号是%d\n",m);
}
printf("该数是%d\n",k);
}
2.(教材习题6.5)把数组中的值按逆序重新存放.
例如:原存放顺序: a[5]={815 -64 513  114 4096};
要求存放顺序改为: a[5]={4096 114 513 -64 815};  请注意不是逆序输出,是逆序存放。
把正确程序写在下边:
2.
#include "stdio.h"
main()
{
int i,a[5]={815,-64,513,114,4096};
i=a[1];
a[1]=a[3];
a[3]=i;
i=a[0];
a[0]=a[4];
a[4]=i;
for(i=0;i<=4;i++)
printf("%d  ",a[i]);
printf("\n");
}
3.(教材习题6.4)设已知数组为
int a[10]={-1001,-234,0,78,96,100,
234,456,1001};其前9个元素是由小到大排列好的。现由键盘输入一个数,
将其插入到数组中,要求插入后的数组仍为有序数组。
3.
#include "stdio.h"
main()
{
int i,j,t,a[10]={-1001,-234,0,78,96,100,234,456,1001};
scanf("%d",&a[9]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%d  ",a[i]);
printf("\n");
}
实验七:1、字母统计问题。输入一个长度小于80的字符串,统计其中字母的个数。
例如:从键盘输入 Ab1 23c 后回车,输出结果是3。把正确程序写在答案中。
答案:
2、编一程序,将字符数组s2中全部字符复制到字符数组 s1中,
不要用字符串库函数。复制时,’\0’也要复制过去。其后内容不复制。
例如:假设 char s1[10]=”ABCD”,s2[5]=”123”;
你的程序运行后,使s1内容为”123”;把正确程序写在答案中。
答案:
3. 编一字符串连接程序,从键盘输入字符串s1、s2的内容,
而后将s2的内容复制到字符数组 s1尾部,
不要使用任何库函数。复制时,’\0’也要复制
过去。其后内容不复制。 例如:假设 char s1[10]=”ABCD”,s2[5]=”123”;你的程序运行后,使str1内容为”ABCD123”; 把正确程序写在答案中。4、用选择法对10个整数由小到大排序,设数组为:int a[10]={20,9,10,-16,-9,18,96,7,11,33};选择法其基本思想是:第0步:出数组a中10个数中最小数的下标min,让第0个元素与a[min]交换,
例如:本步中数组a中最小值位置是min=3,则a[0]与a[3]交换;第1步:出剩余9个元素中最小数的下标min,让第1个元素与a[min]交换,
例如:本步中剩余9个元素中最小值位置是min=4,则a[1]与a[4]交换;;第2步:出剩余8个元素中最小数的下标min,让第2个元素与a[min]交换;以后类似,请自己总结规律编程实现,把正确程序写在答案中。
答案:

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