第九周作业记录

q(≧▽≦q)、


1.判断一个正整数是否为回文数

代码示例

/*编写一个函数来判断一个正整数是否为回文数,若是则返回1,否则返回0。所谓回文数是指各位数字左右对称的数,例如1221、3553等。该函数的原型为:
int ispalindrome(int n);
其中参数n是待判断的正整数,该函数有返回结果。
编写主函数,对上述函数进行测试,并找出1000∽n (包括1000和n,1000 ≤ n <10000)之间的所有回文数,按从小到大的次序在屏幕上显示输出,每个数之间用一个空格分隔,最后一个数后面没有空格。
*/
//方法一:整数变成字符串,反转字符串法
//整数变字符串,加头文件#include<stdlib.h>,用char itoa(int num,char* str,int radix),radix是进制(如2,10,6)
//字符串变整数,同样的头文件,int atoi(const char *nptr),nptr是待转的整数字符串
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int ispalindrome(int n)
{char a[10],b[10];itoa(n, a, 10);   //整数转字符串strcpy(b, a); strrev(a);   //反转字符串,记为bif (strcmp(a, b) == 0)   //若反转前后一样,则是回文数return 1;else return 0;
}
int main()
{int num, space = 0;scanf("%d", &num);for (int i = 1000; i <= num; i++)if (ispalindrome(i) == 1){if (space != 0)printf(" ");printf("%d", i);space++;}return 0;
}
//方法二,针对本题只有四位回文数,函数可以设简单许多
/*#include<stdio.h>
int ispalindrome(int n);
int main()
{int num, space = 0;scanf("%d", &num);for (int i = 1000; i <= num; i++)if (ispalindrome(i) == 1){if (space != 0)printf(" ");printf("%d", i);space++;}return 0;
}
int ispalindrome(int n)   //注意本题只有四位数字,所以只需判断四位回文数
{if (n / 1000 % 10 == n % 10 && n / 100 % 10 == n / 10 % 10)return 1;else return 0;
}*/

2.统计其中各个英文字母的出现次数

代码示例

#include<stdio.h>
int main()
{char string[200];int count = 0,douhao=0;gets (string);for (char j = 'A'; j <= 'Z'; j++)   //从A/a开始,确定一个字母,一个个数有几个{for (int i = 0; string[i] != '\0'; i++)   // 在字符串里一个一个数确定的字母个数if (string[i] == j || string[i] == j + 32) count++;if (douhao != 0)printf(",");    //输出printf("%d", count);count = 0;douhao++;}return 0;
}

3.找到出现最多的字符

代码示例

/*编写程序,要求在一个字符串中查找连续出现次数最多的一个字符,并显示其所在的开始下标和次数。(如果出现最多的字符不止一个,输出最靠前的字符)
输入:一个字符串(字符个数不超过100,无空格)
输出:出现最多的字符,次数,开始下标(这三个值之间用空格分隔,末尾无空格)*/
#include<stdio.h>
int main()
{char input[100], cm;
int count = 1, countm = 0, subm, sub = 0,i;   //在设变量时,我们就把最大次数和下标初始化
gets(input);
cm = input[0];   //先把第一个字符当成出现最多的
for (i = 1; input[i] != '\0'; i++)   //我们从第二个字符开始找{if (input[i] == input[i - 1])    count++;   //如果这个数和上一个相同,则计数加一if (input[i] != input[i - 1])    //如果不同,则把已经计的数和最大计数比较,将最大的储存,并初始化计数,和下标开始记录下一个字符{if (count > countm){countm = count;cm = input[i - 1];subm = sub;}count = 1;   //初始化,开始记录下一个字符的个数和下标sub = i;}}
//注意,上述for循环没有把最后一个数进行比较,所以还得单独比较一次
if (count > countm)
{countm = count;subm = sub;cm = input[i - 1];
}
printf("%c %d %d", cm, countm, subm);
return 0;
}

4.闰年计算

代码示例

/*闰年计算。程序输入一个正整数Y,以及另一个正整数N,以一个空格分隔。计算从Y年开始后的第N个闰年是哪一年(如果Y本身是闰年,则Y之后的第一个闰年是Y)。输入格式:两个整数:Y和N。用空格分隔
输出个数:一个整数*/
#include<stdio.h>
int leapyear(int n)    //判断是否是闰年,若是则返回1,不是则返回0
{if(!(n%4)&&(n%100)||(!(n%400)) )return 1;else return 0;
}
int main()
{int Y, N, n=0;scanf("%d %d", &Y, &N);while (n < N)    //一年一年判断就好了{if (leapyear(Y) == 1) n++;Y++;}printf("%d", --Y);   //注意,最后一个while循环结束时多加了一年,要减掉。这里注意Y--和--Y的区别return 0;
}
/*i++,先返回i的值,再给i加一
++i,先给i加一,再返回i的值*/

5.按规则输出倒序字符串

代码示例

/*编写程序,按下列规则倒序输出子字符串。先输出最后的一个字符,再输出最后两个字符串,在再出后面三个字符..., 最后输出整个字符串。输入的字符串长度不超过100。
输入:一个字符串(无空格,字符个数不超过100)
输出:空格隔开的子字符串,用一个空格间隔。
输入输出样例:student
t nt ent dent udent tudent student*/
//可以用两层循环来输出
#include<stdio.h>
#include<string.h>
int main()
{char a[100];int len, space = 0;gets(a);len = strlen(a);/*用for循环输出*/for (int i = len - 1; i >= 0; i--)   //从后往前调整每一组的第一个字符下标{if (space != 0)printf(" ");   //在输出下一组前输出空格for (int n = i; n < len; n++)  //输出每一组字符printf("%c", a[n]);space++;}return 0;
}

6.单词加密问题

代码示例

/*单词加密。输入一个字符串和一个非负整数k,对字符串中的每一个字母,用字母表中其后的第k个字母代替,不够k个时再从字母a循环计数。例如k=3是,a用d代替,A用D代替,x用a代替,y用b代替,保持大小写不变。字符串中的非字母字符不变。字符串的长度不超过100。输入:一个字符串(无空格)和非负整数k,之间用空格分隔输出:加密的字符串.
*/
#include<stdio.h>
char enc(char en, int kn)   //设一个加密函数,将每个字母按规则加密
{char enm;if (((en >= 'A' && en <= 'Z') && en + kn <= 'Z') || ((en >= 'a' && en <= 'z') && en + kn <= 'z')) enm = en + kn;   //如果字母不越界,加kn后输出else if ((en >= 'A' && en <= 'Z') && en + kn > 'Z') enm = 'A' + kn - 'Z' + en - 1;   //大写字母循环加密else if ((en >= 'a' && en <= 'z') && en + kn > 'z')  enm = 'a' + kn - 'z' + en - 1;   //小写字母循环加密else enm = en;   //如果不是字母,则不变return enm;
}//注,函数中的else与上面三个if并列,所以所以if必须加else,否则最后那个else就变成了和最邻近的if并列了
int main()
{char str[100];int k;scanf("%s %d",str, &k);for (int i = 0; str[i] != '\0'; i++)str[i]= enc(str[i], k);printf("%s", str);return 0;
}

7.按规则去掉字符串末尾多余的星号

代码示例

/*编写程序,去掉字符串末尾多余的星号。输入带星号(*)的字符串和n,使字符串尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。字符串的长度不超过200。字符串中的星号是英文星号。 输入:一个字符串(无空格,字符串长度不超过100)和一个非负整数,中间用空格隔开。输出:去掉多余*号的字符串。样例:
***street**music****  2
***street**music**
*/
#include<stdio.h>
#include<string.h>
int main()
{char st[100];int n, num=0,j;scanf("%s %d", st, &n);strrev(st);   //反转字符串for (int i = 0; st[i] == '*'; i++) num++;   //数原来字符串末尾*数量if (num <= n)strrev(st);   //如果小于等于n,则不做操作,反转回来if (num > n)   //如果大于n,则用切割字符串的方法(把后面的字符往前移),修改*数量{for (j = 0; st[j + num-n] != '\0'; j++)   //每一项都变成它后面num-n项的数st[j] = st[j + num-n];st[j] = '\0';strrev(st);   //反转回来}printf("%s", st);return 0;
}

8.字符串中查找字符位置

代码示例

/*查找一个字符在字符串中出现的第一个位置并输出这个位置。位置从0开始。输入输出格式:
输入:待查找的字符串(字符个数不超过100)和需要查找的字符,字符串中可能含有空格。(输入时,待查找的字符串与所需查找的字符用*号隔开)如:“待查找字符串*需要查找的字符”
输出:字符的位置(如有多个相同的字符,只查找第一个,如果没有输出-1。)
*/
#include<stdio.h>
#include<string.h>
int main()
{char st[102], seek;int judge = 0;gets(st);   //由于gets的输入结束是回车键,为了满足题目要求,我们只能把*<seek>也放到字符串里strrev(st);seek = st[0];   //找到待查数是什么strrev(st);for (int i = 0; st[i] != '*'; i++)  //一个一个找是否有待查找字符,注意这里找到*为止。{if (st[i] == seek)   //若找到,则跳出循环,输出位置{judge = 1;printf("%d", i);break;}}if (judge == 0)printf("-1");   //若没找到,输出-1return 0;
}

9.统计选票

代码示例

/*
统计选票。三个候选人分别是Li、Zhang和Wang, Li 的代号是1;Zhang的代号是2; Wang的代号是3。依次输入代表得票人代号的数字(即投票),直到输入-1则投票结束。然后统计每个人的得票数和废票数。不是-1,1,2,3的数字为废票。输入:若干整数,最后一个数是-1。(输入的每个数之间有空格)
输出:四个整数,以空格隔开,代表三个人的Li、Zhang、Wang的得票数以及废票数。
输出格式:"%d %d %d %d\n"
*/
#include<stdio.h>
int main()
{int vote[4]={0}, x = 0;while (x != -1){scanf("%d", &x);   //输入switch (x)         //判断{case 1:vote[0]++;break;case 2:vote[1]++;break;case 3:vote[2]++;break;case -1:break;default:vote[3]++;}}printf("%d %d %d %d", vote[0], vote[1], vote[2], vote[3]);return 0;
}

10.除首尾字符外降序排序

代码示例

/*输入一个字符串(长度不超过200,不包含空格,至少有1个字符),除首尾字符外,将其余的字符按ascii码降序排列,然后输出。
*/
//用冒泡法
#include<stdio.h>
#include<string.h>
void Bubble(char* s, int n)  //类似冒泡排序的排序函数
{for(int i = 1; i < n - 2; i++)for (int j = n - 2; j > i; j--)if(s[j]>s[j-1]){char temp = s[j];s[j] = s[j - 1];s[j - 1] = temp;}
}
int main()
{char st[201];int len;  scanf("%s", st);len = strlen(st);Bubble(st,len);printf("%s", st);return 0;
}

总结

注意一些语法上的小问题,譬如if-else结构,还有冒泡算法;

大计基作业记录(4)相关推荐

  1. 大计基作业记录(3)

    第八周作业记录 记录一下第八周作业. 1.统计整数个数 代码示例 /*输入若干个整数,其值在0至4的范围内,用-1作为输入结束的标志,统计每个整数的个数.输入:[0,4]内的整数组成的序列,最后是-1 ...

  2. 大计基作业记录(2)

    第七周作业记录 记录一下第七周作业吧 1.输出平方根 代码示例: /*从键盘输入一个整数x,输出其平方根(为整数).若输入数大于1000或小于等于0,则输出0,并继续接受下一个输入直至小于等于1000 ...

  3. 大计基作业记录(5)

    第十周作业记录 (._.) 1.数组循环移动 代码示例 /*设数组A中存有n(n>0)个整数,在不允许使用另外数组的前提下,将A中的每个整数循环右移m(m>=0)个位置.即:将A中的数据由 ...

  4. 大计基作业记录(1)

    第六周作业记录 学了c语言一段时间了,临近期末再回头看做过的题,还是充满感慨的,就浅记一下这学期做过的练习吧.(编程新手,如有错误还请指出(✿◡‿◡)) 1.编写程序完成对应数的输出 代码示例: // ...

  5. C语言实现大计基作业之某种图灵机

    大计基作业中有这么一道题: 答案是D项. 那么如何实现这个图灵机的功能呢? 首先想到需要创建一个不定长度的数组.实际上,如果让用户输入字符串的长度,再输入字符串,就没有什么意义了,所以才想到找个办法根 ...

  6. XJTU大计基作业-1(第7周)

    -11.请输入一个不含0的8位的十进制整数,编写程序取出该整数的中间4位数,分别输出取出的这4位数以及该4位数加上1024的得数. 输入:一个整数. 输出:两个整数,用空格分隔. #define _C ...

  7. XJTU大计基作业-5(第11周)

    //设数组A中存有n(n > 0)个整数, // 在不允许使用另外数组的前提下, // 将A中的每个整数循环右移m(m >= 0)个位置. // 即:将A中的数据由(A0A1--An - ...

  8. XJTU大计基作业第13周

    //编写一个程序,读入n个用户姓名和电话号码, // 按姓名的字典顺序排列后, // 输出用户的姓名和电话号码,n从键盘输入. // //样例: // //输入: // //3 // //张 122 ...

  9. XJTU大计基第九周编程作业

    第四次大计基作业 题目描述: 编写程序将4个字符构成的字符串用替换加密法编码为密文,其中加密规则是:将原来的字母用字母表中其后的第3个字母替换.注意,最后3个字符用前3个替换,如x用a替换. 输入输出 ...

最新文章

  1. Google地图搜索的触角伸向月球
  2. html+not选择器,CSS3属性选择器与(:not)选择器_html/css_WEB-ITnose
  3. VS Code Element 提示 VSCode-Element-Helper 插件
  4. ABS 1.1.0:更多Python和Bash提供最有趣的编程语言
  5. python3.6找到不_sqlite3模块
  6. 用分布式锁解决并发问题
  7. shellcode xor编码/解码[1]
  8. 菜鸟的学习之路(9) — ArrayList类
  9. 保密检查便携式计算机,Lyaept关于便携式计算机和移动存储介质保密管理制度.doc...
  10. (转贴)正则表达式学习心得体会(1)
  11. Ubuntu Server 16.04服务器版配置图解教程14 - 安装PHP7.1.11(源码包安装)
  12. Java 文件下载,文件名乱码问题解决。
  13. 51单片机和52单片机区别是什么?51仿真器有必要买吗?
  14. 探究文华盘整(PANZHENG)函数之一
  15. 服务器虚拟化集群部署
  16. c 语言 数字字符统计
  17. 服务器断电后可以自动开机吗,想要服务器断电后自动开机,怎么设置?
  18. RH Timer pro for Mac(定时计时器软件)
  19. [Java] [SurfaceView] 使用EGL
  20. 科技大佬对人工智能的看法

热门文章

  1. 构建版本上传 itunes connect 错误记录
  2. CSS文字居中显示的几种方式
  3. POJ1001 求高精度幂 (分治高精度大数相乘)
  4. 使用java创建pdf 并返回流给前端
  5. ST意法半导体官网最近新闻
  6. Linux及软件安装
  7. 安卓文字转语音——其实可以很简单——TextToSpeech用法解析
  8. 视觉工程师必须知道的工业相机50问,绝对干货!!!
  9. 一款将打包后的Chrome插件自动化加载到浏览器的webpack插件
  10. 制造业应用ERP企业管理系统的必要性