C语言printf的问题

学生有10门课a~j,成绩是int型,
原本是printf("%d%d%d%d%d%d%d%d%d%d",a,b,c,d,e,f,g,h,i,j);这样输出成绩的,
但是我想要它,当某门课成绩是-1时,输出”无“,要怎样做呢?

先输出到一个字符数组,再检查 字符数组 里是否有 -1,凡 -1 处,替换成 无 的中文码。我的编译器没有中文功能,只好用 Wu 代替。你的编译器若有中文功能,你用 无的编码替代Wu 即可。中文是双字节编码,一个字节替代W,另一字节替代u便可。
程序例子如下:
#include <stdio.h>

main()
{
//int a,b,c,d,e,f,g,h,i,j;
int a=98,b=6,c=-1,d=32,e=87,f=11,g=73,h=-1,i=100,j=27;
char str[80];
int k;
sprintf(str,"%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d",a,b,c,d,e,f,g,h,i,j);
for (k=0;k<strlen(str);k++){
if (str[k]=='-' && str[k+1]=='1' && str[k+2]==' ') {str[k]='W';str[k+1]='u';};
}
printf("%s",str);
return 0;
}
===
其实,你若用数组存放成绩,则程序简单得多:
int z[10]={98,6,-1,32,87,11,73,-1,100,27};
int k;
for (k=0;k<10;k++) if (z[k]== -1) printf(" Wu "); else printf("%6d",z[k]);
一句循环输出就解决问题了。输出:
98 6 Wu 32 87 11 73 Wu 100 27
温馨提示:答案为网友推荐,仅供参考
相似回答