开学c语言测试,初学c语言之开学第一次打卡

近日开学,忙了好多事,因此隔了好久才写了这篇博客。话少,就直接进入正题了:

数数字问题

这是题目:

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling

1: yi

2: er

3: san

4: si

5: wu

6: liu

7: qi

8: ba

9: jiu

输入格式:

输入在一行中给出一个整数,如:1234。

提示:整数包括负数、零和正数。

输出格式:

在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。

输入样例:

-600

输出样例:

fu liu ling ling

思路:

1.需要一个判断正负的步骤;

2.需要一个循环来依次分解各位数字;

3.因为是从个位开始分解而读出拼音是从最大位数开始,所以需要数组存储,然后逆向输出。

下面是代码(之前尝试用数组,后来找不出原因,所以第一个用的switch-case):

#includeint main()

{

int num;

int i=0;

int number[100];

scanf("%d",&num);//读入

if(num<0){//判断正负

printf("fu ");

num = 0 - num;//转为正数

}

if(num==0){

printf("ling");

}

for(;num>0;i++){//存入各位数字

number[i] = num % 10;

num = num / 10;

}

for(i--;i>=0;i--){

int j=number[i];

switch(j){

case 0:

printf("ling");

break;

case 1:

printf("yi");

break;

case 2:

printf("er");

break;

case 3:

printf("san");

break;

case 4:

printf("si");

break;

case 5:

printf("wu");

break;

case 6:

printf("liu");

break;

case 7:

printf("qi");

break;

case 8:

printf("ba");

break;

case 9:

printf("jiu");

break;

}

if(i!=0){

printf(" ");

}

}

return 0;

}

其中switch-case可以改成字符数组,不过还没写完,等日后更新。

个位数统计

题目:

个位数统计(15 分)

给定一个 k 位整数 N=d

​k−1

​​ 10

​k−1

​​ +⋯+d

​1

​​ 10

​1

​​ +d

​0

​​ (0≤d

​i

​​ ≤9, i=0,⋯,k−1, d

​k−1

​​ >0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。

输入格式:

每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。

输出格式:

对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。

输入样例:

100311

输出样例:

0:2

1:3

3:1

写在前面:代码编译正确,但试运行之后发现存在范围限制,读入超出一定位数的数字不能输出正确结果,原因还在找。下面是代码:

#includeint main()

{

int N;//需要分解的次数

int num[10]={0};//各位数字出现的次数

int d;//0到9

scanf("%d",&N);

if(N==0){

return 0;

}

for(;(N>=1);){

d = N % 10;

num[d]++;

N = N / 10;

}

for(d=0;d<10;d++){

if(num[d]!=0){

printf("%d:%d\n",d,num[d]);

}

}

return 0;

}

最后,最近做题较少,日后会加大练习强度。

文章略潦草,请见谅。

你可能感兴趣的:(开学c语言测试)