查看: 95|回复: 2

C语言程序设计(第四版,苏小红)课后习题解析

[复制链接]

5

主题

8

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2023-1-18 07:19:04 | 显示全部楼层 |阅读模式
习题   4

4.1
分析并写出下面程序的运行结果。
(1)
#include <stdio.h>
int main(void)
{
char c1 = 'a',c2 = 'b',c3 = 'c';
printf ("a%cb%cc\n",c1,c2,c3);
return 0;
}

(2)
#include <stdio.h>
int main(void)
{
    int a = 12,b=15;
    printf ("a = %d%%,b = %d%%\n",a,b);
    return 0;
}

(3)假设程序运行时输入123456。
#incldue <stdio.h>
int main(void)
{
    int a,b;
    scanf ("%2d%*2s%2d",&a,&b);
    printf ("%d,%d\n",a,b);
    return 0;
}
(1)
aabbc(2)
​   %%为输出一个% 。
a = 12%,b = 15%(3)
​   %2d为读取两位并按int存储,%*2s为忽略两位(按字符计算)。
12,564.2
分析下面程序,请指出错误的原因和程序错在哪里,并改正错误。
#include <stdio.h>
int main(void)
{
    long a,b;
    float x,y;
    scanf ("%d,%d\n",a,b);
    scanf ("%5.2f,%5.2f\n"x,y);
    printf ("a = %d,b = %d\n",a,b);
    printf ("x = %d,y = %d\n",x,y);
    return 0;
}
#include <stdio.h>
int main(void)
{
    long a,b;
    float x,y;
    scanf ("%d,%d\n",&a,&b);    //scanf函数的参数地址表中是地址
    scanf ("%5.2f,%5.2f\n"&x,&y);   //scanf函数的参数地址表中是地址
    printf ("a = %ld,b = %ld\n",a,b);   //long型变量的格式转换说明为%ld
    printf ("x = %f,y = %f\n",x,y); //float型变量的格式转换说明为%f
    return 0;
}4.4
填空题
(1)要使下面程序在屏幕上显示1,2,34,则从键盘输入的数据格式应为___________。
#include <stdio.h>
int main(void)
{
    char a,b;
    int c;
    scanf ("%c%c%d",&a,&b,&c);
    printf ("%c,%c,%d\n",a,b,c);
    return 0;
}
(2)在与上面程序的键盘输入相同的情况下,若将程序中的第7条语句修改为
    printf ("%-2c%-2c%d\n",a,b,c);
    则程序的屏幕输出为________________。
(3)要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕在屏幕上显示的结果也为1,2,34,则应将程序中的第6条语   句修改为__________________。
(4)在(3)的程序基础上,程序仍输入1,2,34,若将程序中的第7条语句修改为
    pritnf ("\'%c\',\'%c\',%d\n",a,b,c);
    则程序的屏幕输出为______________。
(5)要使上面程序无论用下面那种格式输入数据,程序在屏幕上的而输出结果都为1,2,34,则应该将程序中的第6条语句修改为
________________ 。
第1种输入方式:1,2,34 (以逗号作为分隔符)
第2中输入方式:1 2 34 (以空格作为分隔符)
第3中输入方式:1   2   34 (以Tab键作为分隔符)
第4种输入方式:1
               2
               34 (以回车符作为分隔符 )
(1)
格式转换说明符%c每次读取一个字符 。
故应该输入:
1234(2)
%-2c表示输出一个字符,这个字符占两个字符宽,左对齐,用空格补位 。
1 2 34(3)
printf ("%c,%c,%d");(4)
\' 表示输出一个 ' 。
'1','2',34(5)
可用%*c忽略一个字符 。
scanf ("%c%*c%c%*c%d",&a,&b,&c);4.4
参考例4.2程序,编程从键盘输入一个小写英文字母,将其转换为大写英文字母,将转换后的大写英文字母及其十进制的ASCII码值显示到屏幕上。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char a;
    while (a < 97 || a > 122)   //判断输入字母是否为小写字母
    {
    printf ("Pleaes enter a lowercase : ");
    scanf ("%c",&a);
    }
    a = a - 32;
    printf ("%c %d",a,a);
    return 0;
}
回复

使用道具 举报

4

主题

11

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2025-2-18 14:42:01 | 显示全部楼层
无论是不是沙发都得回复下
回复

使用道具 举报

3

主题

9

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2025-3-21 22:17:15 | 显示全部楼层
LZ是天才,坚定完毕
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表