XJTU大学计算机编程作业题 第9周

第一题

题目描述:
编写程序将4个字符构成的字符串用替换加密法编码为密文,其中加密规则是:将原来的字母用字母表中其后的第3个字母替换。注意,最后3个字符用前3个替换,如x用a替换。

输入输出格式:
输入:4个字符
输出:4个字符

样例输入:

ABcx

样例输出:

DEfa

样例代码

#include <stdio.h>
int main()
{
  char a[5];
  scanf("%s",a);
  for(int i=0;i<4;i++)
  {
    if(a[i]>=120||(a[i]>=88&&a[i]<=90))
    {
      if(a[i]==120)a[i]=97;
      if(a[i]==121)a[i]=98;
      if(a[i]==122)a[i]=99;
      if(a[i]==88)a[i]=65;
      if(a[i]==89)a[i]=66;
      if(a[i]==90)a[i]=67;
    }
    else
  		a[i]=a[i]+3;
  }
  printf("%s",a);
  return 0;
}

第二题

题目描述:
闰年计算。程序输入一个正整数Y,以及另一个正整数N,以一个空格分隔。计算从Y年开始后的第N个闰年是哪一年(如果Y本身是闰年,则Y之后的第一个闰年是Y)。


程序输入:
Y N

程序输出:
Y年开始后的第N个闰年

样例输入:

2005 3

样例输出:

2016

参考代码

#include<stdio.h>
int main()
{
       int y, n;
       scanf_s("%d %d", &y, &n);     //%d%d默认了两个整数之间有空格
       for (y; n > 0; y++)     //此法相较法二避免了分类讨论
       {
              if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
                      n--;
       }
       printf("%d", y-1);     //之所以是输出y-1,是因为当n减到1并且此时y对应的是闰年,n会--,但此时y++仍会执行;要是不减1而输出y,得到的结果每次都是正确结果+1的年份
       //不合法语句//system ("pause");
       return 0;
}

注意:闰年判断是定式代码,需理解:

 if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)//判断闰年的语句

第三题

方法的多样性
题目描述:
某城市最高的楼有一部电梯,该电梯依照输入楼层数的先后次序运行。电梯最初在0层。运行完一个输入序列后就停止在该楼层,不返回0层。编写程序计算电梯运行一个序列的时间。电梯每上1层需要6秒。每下1层需要4秒。如在某层停留,无论上下人多少,均停留5秒。

程序输入:
电梯的运行序列。楼层的值大于等于1,小于100 , 0在序列中表示结束序列输入。比如输入序列为 2 1 0, 则意味着电梯先从0层升至2层停留,然后再降至1层停留。

程序输出:
每个序列电梯运行的时间(秒)

样例输入:

2 1 0

样例输出:

26

参考代码

#include <stdio.h>
int main()
{
	int current_floor;
	int next_floor;
	int sum;
	current_floor = 0;
	sum = 0;
	int diff;
	scanf_s("%d", &next_floor);
	while (next_floor != 0)
	{
		diff = next_floor - current_floor;
		if(diff>0)
		{
			sum = sum + diff * 6;
		}
		if (diff<0)
		{
			sum = sum + (-diff) * 4;
		}
		sum = sum + 5;
		current_floor = next_floor;
		scanf_s("%d", &next_floor);//循环输入next_floor直到next_floor==0	
	}
	printf("%d", sum);
	return 0;
}

第四题

方法的多样性
题目描述:
编写一个程序,当输入一个字符串后,要求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。

程序输入:
待统计的字符串

程序输出:
五个数值依次为大、小写字母、数字、其他字符和总共含有的字符个数,以空格分隔

样例输入:

I enjoyed reading these books very much

样例输出:

1 32 0 6 39

参考代码

#include <stdio.h>
#include <string.h>
int main()
{
  char a[100];
  gets(a,100);//用gets也行,100表示缓冲区大小(可去)
  int i;
  i=strlen(a);
  int total=0,num=0,cap=0,small=0,other=0;
  for(int j=0;j<=i;j++)
  {
    if(a[j]=='\0')break;
    if(a[j]>='A'&&a[j]<='Z')cap++;
  	else if(a[j]>='a'&&a[j]<='z')small++;
    else if(a[j]>='0'&&a[j]<='9')num++;
    else other++;
    total++;
  }
  printf("%d %d %d %d %d",cap,small, num,other,total);
  return 0;
}

第五题

解题方法的多样性
题目描述:
请输入一个正整数(如:7654321),然后将该整数按照标准的三位分节格式输出(逗号是西文的逗号,如 7,654,321)

**程序输入: *
待分节的正整数

程序输出:
分节后的正整数

样例输入:

3456789

样例输出:

3,456,789

参考代码

#include <stdio.h>
int main()
{
    int a,i;
    char s[30] = "";
    scanf("%d",&a);
    i = 0;
    while(1) 
    {
        s[i] = a%10 + '0';
        a = a/10;
        if(a==0) 
	    {
			break;
		}
        i++;
    }//数位分离
    printf("%c",s[i--]);
    for(i;i>=0;i--)
    { 
        if((i+1)%3== 0) /* i+1是是单个数字在数字字符串的位置,因为上面i是从0开始的*/
        {
            printf(",%c",s[i]);
        }
        else
        {
            printf("%c",s[i]);
        }
    }
 
    return 0;
}

注意:数位分离的代码

	int a,s[100];
	int i=0;
    while(1) 
    {
        s[i] = a%10 + '0';
        a = a/10;
        if(a==0) 
	    {
			break;
		}
		i++;
    }//数位分离

第六题

题目描述:
输入一个整数n(n>=2),判断n是否为素数。是素数输出 “YES”, 否则输出 “NO”。

程序输入:
整数n

程序输出:
是素数输出 “YES”, 否则输出 “NO”。

样例输入:

7

样例输出:

YES

参考代码

#include <stdio.h>
int main()
{
    int n, x;
    scanf("%d", &n);
    x = 0;
    for (int i = n; i > 0; i--)
    {
        if (n % i == 0)x++;
    }
    if (x == 2)printf("YES");
    else printf("NO");
    return 0;
}

第七题

题目描述:
从键盘输入一个正整数(>1),然后将该整数分解为1和各个质因子的相乘,如果输入的整数本身就是质数,则应分解为1和该数本身相乘。

输入输出格式:

输入: 1个整数
输出:因子分解,因子由小到大输出。如:122*3

样例输入:

18

样例输出:

1*2*3*3

参考代码

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    for(int i=1;i<=n;i++)
        if (n % i == 0&&i!=n) 
        { 
            n = n / i; 
            printf("%d*", i);
            i = 1; 
        }
        else if(n%i==0&&i==n)
        {
            printf("%d", i);
            break;
        }
    
    return 0;
}

发布了3 篇原创文章 · 获赞 3 · 访问量 576

猜你喜欢

转载自blog.csdn.net/paul000917/article/details/105542072