鱼C论坛

 找回密码
 立即注册
查看: 2536|回复: 7

[已解决]字符串的问题

[复制链接]
发表于 2021-5-5 16:35:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>





  2. void main()
  3. {
  4.         int i,x=0, g=0, y=0;
  5.         char a[100];
  6.         char *p;
  7.         p=a;
  8.         printf("欢迎进入投票系统:\n\n");
  9.         printf("选人有:甲, 乙, 丙\n\n\n");
  10.         for (i=0; i<5; i++)
  11.         {
  12.                 printf("第%d位票:", i+1);
  13.                 scanf("%s",&a);
  14.                 if(*p=='甲')
  15.                 {
  16.                         g=g+1;
  17.                 }
  18.                 else if(*p=='乙')
  19.                         x=x+1;
  20.                 else if (*p=='丙')
  21.                         y=y+1;
  22.         }
  23.         printf("x=%d,y=%d,g=%d\n\n",x,y,g);

  24. }


复制代码


我这里是要做一个投票系统 统计票数的  然后*p== 字符的时候  没啥用呢
最佳答案
2021-5-6 14:19:55
g1063496360 发表于 2021-5-5 17:46
好的 但是我就是不想用strcmp这个库函数 怎么弄呢

那就自己写一个
  1. #include <stdio.h>

  2. int ya_strcmp(const char *p1, const char *p2) {
  3.     for(size_t i = 0; p1[i] || p2[i]; ++i) {
  4.         if(p1[i] != p2[i]) return p1[i] - p2[i];
  5.     }
  6.     return 0;
  7. }

  8. int main(void)
  9. {
  10.     int i,x=0, g=0, y=0;
  11.     char a[100];

  12.     printf("欢迎进入投票系统:\n\n");
  13.     printf("选人有:甲, 乙, 丙\n\n\n");
  14.     for (i=0; i<5; i++)
  15.     {
  16.         printf("第%d位票:", i+1);
  17.         scanf("%s",a);
  18.         //p=a;//p指向了a 应该写在这里 不对需要指针吗?不需要啊
  19.         if(!ya_strcmp(a,"甲"))
  20.             g=g+1;
  21.         else if(!ya_strcmp(a,"乙"))
  22.             x=x+1;
  23.         else if (!ya_strcmp(a,"丙"))
  24.             y=y+1;
  25.     }
  26.     printf("乙=%d,丙=%d,甲=%d\n\n",x,y,g);
  27.     return 0;
  28. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-5 17:04:19 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2021-5-5 17:07 编辑

甲是字符串,不可以写成 '甲',必须写成 "甲"。
if(! strcmp(* p , "甲")) g ++ ;
其余类似的判断语句自行修改。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-5 17:26:51 | 显示全部楼层
本帖最后由 肖-肖 于 2021-5-5 17:29 编辑

我帮你稍微改了下
代码如下:

  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int i,x=0, g=0, y=0;
  5.         char a[100];
  6.         char *p;

  7.         printf("欢迎进入投票系统:\n\n");
  8.         printf("选人有:甲, 乙, 丙\n\n\n");
  9.         for (i=0; i<5; i++)
  10.         {
  11.                 printf("第%d位票:", i+1);
  12.                 scanf("%s",&a);
  13.                 //p=a;//p指向了a 应该写在这里 不对需要指针吗?不需要啊
  14.                 if(!strcmp(a,"甲"))
  15.                         g=g+1;
  16.                 else if(!strcmp(a,"乙"))
  17.                         x=x+1;
  18.                 else if (!strcmp(a,"丙"))
  19.                         y=y+1;
  20.         }
  21.         printf("乙=%d,丙=%d,甲=%d\n\n",x,y,g);
  22. }

复制代码

运行结果如下:
hd12.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-5 17:46:36 | 显示全部楼层
肖-肖 发表于 2021-5-5 17:26
我帮你稍微改了下
代码如下:

好的 但是我就是不想用strcmp这个库函数 怎么弄呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-5 20:04:07 | 显示全部楼层
  1. //适用 Linux
  2. #include <stdio.h>
  3. #include <wchar.h>
  4. #include <locale.h>

  5. int main()
  6. {
  7.         int i,x=0, g=0, y=0;
  8.         wchar_t a;
  9.         wchar_t b;
  10.                 setlocale(LC_CTYPE,"");
  11.         wprintf(L"欢迎进入投票系统:\n\n");
  12.         wprintf(L"选人有:甲, 乙, 丙\n\n\n");
  13.         for (i=0; i<5; i++){
  14.                 wprintf(L"第%d位票:", i+1);
  15.                                 do{
  16.                                         b=getwchar();
  17.                                 }while(b==L'\n');
  18.                                 a=b;
  19.                 if(a==L'甲'){
  20.                         g++;
  21.                 }else if(a==L'乙'){
  22.                         x++;
  23.                                 }else if (a==L'丙'){
  24.                         y++;
  25.                                 }else{
  26.                                         wprintf(L"unknown error!a==%lc,%d\n",a,a);
  27.                                 }
  28.         }
  29.         wprintf(L"x=%d,y=%d,g=%d\n\n",x,y,g);
  30.                 return 0;
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-6 10:28:40 From FishC Mobile | 显示全部楼层
rt3 发表于 2021-5-5 20:04

       不想用 strcmp() 库函数?楼主可真够矫情,如果说不想用 C++,不想用计算机语言,那可咋办?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-6 14:19:55 | 显示全部楼层    本楼为最佳答案   
g1063496360 发表于 2021-5-5 17:46
好的 但是我就是不想用strcmp这个库函数 怎么弄呢

那就自己写一个
  1. #include <stdio.h>

  2. int ya_strcmp(const char *p1, const char *p2) {
  3.     for(size_t i = 0; p1[i] || p2[i]; ++i) {
  4.         if(p1[i] != p2[i]) return p1[i] - p2[i];
  5.     }
  6.     return 0;
  7. }

  8. int main(void)
  9. {
  10.     int i,x=0, g=0, y=0;
  11.     char a[100];

  12.     printf("欢迎进入投票系统:\n\n");
  13.     printf("选人有:甲, 乙, 丙\n\n\n");
  14.     for (i=0; i<5; i++)
  15.     {
  16.         printf("第%d位票:", i+1);
  17.         scanf("%s",a);
  18.         //p=a;//p指向了a 应该写在这里 不对需要指针吗?不需要啊
  19.         if(!ya_strcmp(a,"甲"))
  20.             g=g+1;
  21.         else if(!ya_strcmp(a,"乙"))
  22.             x=x+1;
  23.         else if (!ya_strcmp(a,"丙"))
  24.             y=y+1;
  25.     }
  26.     printf("乙=%d,丙=%d,甲=%d\n\n",x,y,g);
  27.     return 0;
  28. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 13:41:20 | 显示全部楼层
jackz007 发表于 2021-5-6 10:28
不想用 strcmp() 库函数?楼主可真够矫情,如果说不想用 C++,不想用计算机语言,那可咋办?

可把你能耐了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 17:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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