各位大哥,高分求救!

slfslf 2005-06-30 12:34:25
有一程序:有两个字符数组,每个字符数组中有10个汉字,要求字符数组的每个汉字,与另一个字符数组中的每个汉字,组合成两个汉字。一共有100种组合。之后把结果写到一个TXT或EXECL文件中。问题是:每个汉字占两个字节,而用循环做时,每个好象只能输出一个字节吧。
各位大哥,帮帮我吧,有完整的源码更好,分不够可以再加!
...全文
120 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
slfslf 2005-06-30
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{
char str1[40];
char str2[40];
int i=0,j=0;
static str1={"一二三四五"};
static str1={"一二三四五"};
for (i=0;i<=20;i++)
for (j=0;j<=20;j++)
printf("%c%c",str1[i],str2[j]);
}
我这样做,错在哪里啊
daseny 2005-06-30
  • 打赏
  • 举报
回复
晕,str[i]、str[i+1],i+=2不就结了?
jsjjms 2005-06-30
  • 打赏
  • 举报
回复
1.首先汉字占两个字节。如果直接赋值static str1={"一二三四五"};肯定行不通
可以使用 a[]={"一二三四五"},让编译器来计算。
或者就用strcpy


2.同样打印的时候也要注意这个问题。不能单个字节地打印出来,否则都是乱码
双字节打印只要在循环的时候++ 写成+2就可以了。
qfeng_zhao 2005-06-30
  • 打赏
  • 举报
回复
#include <stdio.h>

void main()
{
int i, j, n;
char str1[] = "一二三四五六七八九十";
char str2[] = "一二三四五六七八九十";
char str[5];

for(i=0; i<20; i+=2){
for(j=0; j<20; j+=2){
n = 0;
str[n++] = str1[i];
str[n++] = str1[i+1];
str[n++] = str2[j];
str[n++] = str2[j+1];
str[n] = '\0';

printf("%s\t",str);
}
printf("\n\n");
}
}

楼主的意识可是这样呢??
oyljerry 2005-06-30
  • 打赏
  • 举报
回复
需要字符拷贝,不能直接赋值
daseny 2005-06-30
  • 打赏
  • 举报
回复
给数组赋字符串常量值只能用在定义时初始化,不能先声明再赋值;
已经声明过的变量不能再添加static关键字,必须在第一次声明时就加上;
不说对错,你的代码中str2没赋值;
你的循环是嵌套的,是对每一个i的值j都循环一遍,而不是你想要的i、j一块增长;
不考虑上边的逻辑错误,你的代码也只是把汉字的每个字节重复打印两次,而不是连续打印出每个汉字的两个字节;
一个汉字两个字节,加上NULL标记共11个字节就够。

=================================================
const char str[20] = "一二三四五";
int i = 0;
for (; i < 20; i += 2)
printf("%c%c",str[i],str[i+1]);
=================================================

实际上如果需要打印整个数组,用%s就好了;
处理宽字符,最方便的是使用 wprintf 和 wchar_t,自己查查你用的编译器的参考手册。
  • 打赏
  • 举报
回复
c语言里字符串不能直接赋值。楼上大哥正解
zhousqy 2005-06-30
  • 打赏
  • 举报
回复
strcpy(str1, "一二三四五");

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧