我是一个c语言初学者,教材为《C Primer Plus(第六版)》,代码编辑器为Clion。
此程序是教材第二章2.12第一题。
本题要求输出以下的结果。
姓名 姓氏
姓名
姓氏
姓名 姓氏
第一行使用一个printf()函数,第二行第三行使用一个printf()函数,第四行使用两次printf()函数。
我的代码如下:
#include
int main(void)
{
int name,surname;//设置两个变量,name表示姓名,surname表示姓氏
name = 'jack';
surname = 'smith';
printf("%d %d\n",name,surname);
printf("%d\n%d\n",name,surname);
printf("%d",name);
printf("%d",surname);
return 0;
}
但程序的运行结果为
1784767339 1835627624
1784767339
1835627624
17847673391835627624
进程已结束,退出代码0
同时,CLion提示了这两个警告。
①Character constant too long for its type:6
②Multi-character charater constant:6
请问我该如何修正代码?
您的代码有几个问题需要修正:
1.在 C 语言中,单引号 ' ' 用于表示字符常量,例如 'a' 表示字符 a,而双引号 " " 用于表示字符串常量,例如 "hello" 表示字符串 hello。在您的代码中,name 和 surname 被定义为整型变量,但是赋值时使用了单引号 ' ',这会将字符常量转换成整型值。为了正确赋值,请使用双引号 " ",例如:
char name[] = "jack";
char surname[] = "smith";
这里使用字符数组来保存姓名和姓氏,因为姓名和姓氏是由多个字符组成的字符串。
2.在第一个 printf() 函数中,您需要使用 %s 格式说明符来输出字符串变量,例如:
printf("%s %s\n", name, surname);
3.在第四行中,您需要使用两个 printf() 函数分别输出姓名和姓氏,例如:
printf("%s ", name);
printf("%s\n", surname);
综上所述,您的代码应该修改为:
#include <stdio.h>
int main(void)
{
char name[] = "jack";
char surname[] = "smith";
printf("%s %s\n", name, surname);
printf("%s\n%s\n", name, surname);
printf("%s ", name);
printf("%s\n", surname);
return 0;
}
希望这个回答能够帮助您解决问题。
不知道你这个问题是否已经解决, 如果还没有解决的话: