

(1) 输入并运行教材第3章第4题给出的程序如下所示:
#include int main()
{char cl, c2;cl = 97;c2 = 98;printf("%c %c\n"cl, c2);printf("%d %d\n", cl, c2);return 0;
}
①运行以上程序,分析为什么会输出这些信息。
②如果将程序第4,5行改为
cl = 197;
c2 = 198;
运行时会输出什么信息?为什么?
int cl,c2;
运行时会输出什么信息?为什么?
(2) 输入第3章第5题的程序。即:
用下面的 scanf 函数输入数据,使 a = 3, b = 7, x = 8.5, y = 71.82, cl = 'A' , c2 = 'a'。问 在键盘上如何输入?
#include
int main()
{int a, b;float x, y;char c1, c2;scanf("a=%d b=%d", &a, &b);scanf("%f %e", &x, &y);scanf("%c%c", &c1, &c2);return 0;
}
运行时分别按以下方式输入数据,观察输出结果,分析原因。

通过此题,总结输入数据的规律和容易出错的地方。
输入以下程序:
#include
int main()
{int i, j, m, n;i = 8;j = 10;m = ++i; n = j ++;printf("%d, %d, %d, %d\n", i, j, m, n);return 0;
}
① 编译和运行程序,注意i,j,m,n各变量的值。
② 将第6,7行改为
m = i++;
n = ++j;
再编译和运行,分析结果。
③ 程序改为
#include
int main()
{int i, j;i = 8;j = 10;printf("%d,%d\n", i++, j ++);
}
再编译和运行,分析结果。
④ 在③的基础上,将printf语句改为
printf("%d, %d\n", ++i, ++j);
再编译和运行。
⑤ 再将printf语句改为
printf("%d, %d, %d, %d\n", i, j, i++, j++);
再编译和运行,分析结果。
⑥ 程序改为:
#include
int 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);return 0;
}
再编译和运行,分析结果。
(4)假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。编写程序.(第3章第1题)
计算公式为:
r为年增长率,n为年数,p为与现在相比的倍数。

(1) 输入并运行教材第3章第4题给出的程序如下所示:
#include int main()
{char cl, c2;cl = 97;c2 = 98;printf("%c %c\n"cl, c2);printf("%d %d\n", cl, c2);return 0;
}
运行以上程序,输出这些信息如下所示

error C2146: 语法错误: 缺少“)”(在标识符“cl”的前面)warning C4473: “printf”: 没有为格式字符串传递足够的参数message : 占位符和其参数预计 2 可变参数,但提供的却是 0 参数message : 缺失的可变参数 1 为格式字符串“%c”所需error C2059: 语法错误:“)”
2>已完成生成项目“2-数据类型、运算符和简单的输入输出.vcxproj”的操作 - 失败。
========== 全部重新生成: 成功 1 个,失败 1 个,跳过 0 个 ==========
错误的原因在于
printf("%c %c\n"cl, c2);中,在c1前面缺少了逗号。
已改为如下所示
printf("%c %c\n", cl, c2);
编译运可以通过,如下所示

cl = 197;
c2 = 198;
运行时会输出什么信息?为什么?
如果将程序第4,5行改为
cl = 197;
c2 = 198;
运行结果如下

可以看到输出的是
??
-59 -58
int cl,c2;
运行时会输出什么信息?为什么?
如果将程序第3行改为
int cl,c2;
输出的结果为如下所示
将第3行改为
int cl,c2;
输出的结果为
a b
97 98
(2) 输入第3章第5题的程序。即:
用下面的 scanf 函数输入数据,使 a = 3, b = 7, x = 8.5, y = 71.82, cl = 'A' , c2 = 'a'。问 在键盘上如何输入?
#include
int main()
{int a, b;float x, y;char c1, c2;scanf("a=%d b=%d", &a, &b);scanf("%f %e", &x, &y);scanf("%c%c", &c1, &c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n", a, b, x, y, c1, c2);return 0;
}
运行时分别按以下方式输入数据,观察输出结果,分析原因。

输入数据的方式
输入与输出结果如下所示
a=3,b=7,x=8.5,y=71.82,A,a
a=3,b=-858993460,x=-107374176.000000,y=-107374176.000000,c1=,,c2=b

输入与输出结果如下所示
a=3 b=7 x=8.5 y=71.82 A a
a=3,b=-858993460,x=-107374176.000000,y=-107374176.000000,c1=b,c2==

输入与输出结果如下所示
a=3 b=7 8.5 71.82 A a
a=3,b=7,x=8.500000,y=71.820000,c1= ,c2=A

输入与输出结果如下所示
a=3 b=7 8.5 71.82Aa
a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a

输入与输出结果如下所示
3 7 8.5 71.82Aa
a=-858993460,b=-858993460,x=3.000000,y=7.000000,c1= ,c2=8

输入与输出结果如下所示
a=3 b=7
8.5 71.82
A
a=3,b=7,x=8.500000,y=71.820000,c1=
,c2=A

输入与输出结果如下所示
a=3 b=7
8.5 71.82
Aa
a=3,b=7,x=8.500000,y=71.820000,c1=
,c2=A

8. a=3 b=7回车
8.5 71.82Aa回车
输入与输出结果如下所示
a=3 b=7
8.5 71.82Aa
a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a

通过此题,总结输入数据的规律和容易出错的地方。
scanf("a=%d b=%d", &a, &b);在输入的时候,应该和a=%d b=%d保持一致:a=3 b=7scanf("%f %e", &x, &y);在输入的时候,应该和%f %e保持一致:8.5 71.82输入以下程序:
#include
int main()
{int i, j, m, n;i = 8;j = 10;m = ++i; n = j ++;printf("%d, %d, %d, %d\n", i, j, m, n);return 0;
}
① 编译和运行程序,注意i,j,m,n各变量的值。
运行以上程序,输出如下所示

++i是先将变量自身加一,然后赋值给变量m。
j ++是变量先赋值给变量n, 然后在自身加一。
所以m=9, n=10
② 将第6,7行改为
m = i++;
n = ++j;
再编译和运行运行以上程序,输出如下所示

i ++是变量先赋值给变量m, 然后在自身加一。
++j是先将变量自身加一,然后赋值给变量m。
所以m=8, n=11
③ 程序改为
#include
int main()
{int i, j;i = 8;j = 10;printf("%d,%d\n", i++, j ++);
}
再编译和运行运行以上程序,输出如下所示

④ 在③的基础上,将printf语句改为
printf("%d, %d\n", ++i, ++j);
再编译和运行运行以上程序,输出如下所示

⑤ 再将printf语句改为
printf("%d, %d, %d, %d\n", i, j, i++, j++);
再编译和运行运行以上程序,输出如下所示

⑥ 程序改为:
#include
int 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);return 0;
}
再编译和运行运行以上程序,输出如下所示

(4)假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。编写程序.(第3章第1题)
计算公式为:
r为年增长率,n为年数,p为与现在相比的倍数。
编写程序如下
//for 循环方式计算for (int i = 0; i < n; i++){p = p * (1 + r);}printf("%.3lf\n", p);
// 调用math函数方式p = 1.0;r = 0.09;n = 10;p = pow(1 + r, n);printf("%.3lf\n", p);
#define _CRT_SECURE_NO_WARNINGS#include
#include
#include int main()
{system("color 3E");double p, r;int n;p = 1.0;r = 0.09;n = 10;// for 循环方式for (int i = 0; i < n; i++){p = p * (1 + r);}printf("%.3lf\n", p);// 调用math函数方式p = 1.0;r = 0.09;n = 10;p = pow(1 + r, n);printf("%.3lf\n", p);system("pause");return 0;
}
程序编译结果如下所示

程序如下所示
p = 1.0;//r = 0.09;n = 10;scanf("%lf", &r);// for 循环方式for (int i = 0; i < n; i++){p = p * (1 + r);}printf("%.3lf\n\n", p);// 调用math函数方式p = 1.0;//r = 0.09;n = 10;scanf("%lf", &r);p = pow(1 + r, n);printf("%.3lf\n", p);
分别输入
7%,8%,10%运行结果如下所示

2. 8%


③ 在程序中增加printf函数语句,用来提示输入什么数据,说明输出的是什么数据。
增添printf语句如下
printf("输入年利率: ");printf("\n国民生产总值与现在相比增长%.3lf百分比\n\n", p);
程序运行结果如下所示


本次通过C语言及算法设计课程实验二:数据类型、运算符和简单的输入输出。掌握了如下几点。

完整程序如下所示
#include int main()
{/*char cl, c2;*/int cl, c2;cl = 97;c2 = 98;printf("%c %c\n", cl, c2);printf("%d %d\n", cl, c2);return 0;
}
完整程序如下所示
#define _CRT_SECURE_NO_WARNINGS#include
int main()
{int a, b;float x, y;char c1, c2;scanf("a=%d b=%d", &a, &b);scanf("%f %e", &x, &y);scanf("%c%c", &c1, &c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n", a, b, x, y, c1, c2);return 0;
}
完整程序如下所示
#include
int main()
{//int i, j, m, n;//i = 8;//j = 10;///*m = ++i; n = j++;*///m = i++;//n = ++j;//printf("%d, %d, %d, %d\n", i, j, m, n);/*int i, j;i = 8;j = 10;*//*printf("%d,%d\n", i++, j++);*//*printf("%d, %d\n", ++i, ++j);*//*printf("%d, %d, %d, %d\n", i, j, i++, j++);*/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);return 0;
}
完整程序如下所示
#define _CRT_SECURE_NO_WARNINGS#include
#include
#include int main()
{system("color 3E");double p, r;int n;p = 1.0;//r = 0.09;n = 10;printf("输入年利率: ");scanf("%lf", &r);// for 循环方式for (int i = 0; i < n; i++){p = p * (1 + r);}printf("\n国民生产总值与现在相比增长%.3lf百分比\n\n", p);// 调用math函数方式p = 1.0;//r = 0.09;n = 10;printf("输入年利率: ");scanf("%lf", &r);p = pow(1 + r, n);printf("\n国民生产总值与现在相比增长%.3lf百分比\n\n", p);system("pause");return 0;
}
