3)、请补充函数fun(),该函数的功能是:从‘a’到‘z’统计一个字符串中所有字母字符各自出现的次数,结果保存在数组alf中。注意:不区分大小写,不能使用字符串库函数。
例如,输入:“A=abc+5*c”,结果为:a=2,b=1,c=2。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#define N 100
void fun(char *tt,int alf[])
{
int i;
char *p=tt;
for(i=0;i<26;i++)
【1】alf[i]=0;;
while(*p)
{
if(*p>='A'&&*p<='Z')
【2】*p+=32;
if(*p>='a'&&*p<='z')
alf[*p-'a']++;
p++;
}
}
main()
{
char str[N];
char a='a';
int alf[26],k;
clrscr();
printf("\nPlease enter a char string:");
scanf("%s",str);
printf("\n**The original string**\n");
puts(str);
fun(str,alf);
printf("\n**The number of letter**\n");
for(k=0;k<26;k++)
{
if(k%5==0)
printf("\n");
printf("%c=%d ",a+k,alf[k]);
}
printf("\n");
}
4)、从键盘上输入两个整数m和n,求其最大公约数。
main()
{int a,b,num1,num2,temp;
scanf("%d,%d",&num1,&num2);
if(【 1 】num1>num2)
{ temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)
{ temp=【2】a%b;
a=b;
b=temp;
}
printf("%d,%d",a,num1*num2/a);
}
二、智力题(30分)
1、单选题:(每小题4分,5小题,共20分)
1)给你8颗小石头和一架托盘天平。有7颗石头的重量是一样,另外一颗比其它石头略重,除此之外,这些石头完全没有分别。你不得假设那颗石头到底比其它的石头重了多少。请问:最少要称量几次,你才能把那颗较重的石头找出来?B先比六棵
A 1次 B 2次 C 3次 D 4次
2)一个人花8块钱买了一只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了,11块卖给另外一个人。问他赚了多少?
A 1块 B 2块 C 3块 D 4块 B
3) 1块钱一瓶汽水,喝完后两个空瓶换一瓶汽水。问:你有20块钱,最多可以喝到几瓶汽水?C
A 37瓶 B 38瓶 C 39瓶 D 40瓶
4) 有一牧场,已知养牛27头,6天把草吃尽;养牛23头,9天把草吃尽。如果养牛21头,那么几天能把牧场上的草吃尽呢?并且牧场上的草是不断生长的。A
A 12天 B 13天 C 14天 D 15天
5)有四个人要在深夜通过一座桥。这座桥最多只能承受两个人的重量,而且必须打着手电筒才能通过。四个人只有一把手电筒,并且每个人的行走速度也不一样:第一个人通过这座桥要花1分钟,第二个人要花2分钟,第三个人要花5分钟,第四个人要花10分钟;如果两人同行,他们就只能以比较慢的那个人的速度前进。这四个人全部通过这座桥的最短时间是多少?B
A 15分钟 B 17分钟 C 19分钟 D 21分钟
2、推理 (共10分)
假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。
好办。用小的那个一直往大的那个里面倒水。
三、编程题(20分`二选一)
1、在西方,星期五和数字 13 都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”。
要求:输入年份,输出是:判断该年是否包含黑色星期五,如包含,给出具体日期
2、小明去银行存钱,拿了一堆硬币。已知1角的硬币厚度为1.8mm ,5 角的硬币厚1.5mm ,1元的硬币为2.0mm 。小明将1 角的硬币放成一摞,将5 角的硬币硬币放成一摞,将1元的硬币放成一摞,发现3 摞硬币一样高。银行正好把这些硬币换成若干张面值为10 元的纸币。问小明至少带了多少钱的硬币(元为单位),每种面值的硬币有多少个?
要求输出格式为: 1 角的数量,5 角的数量,1 元的数量,总金额。(例如:20,30,40,50)
说明在结果中只输出各个对应的数字即可
1、参考答案:
#include<stdio.h>
typedef struct
{
int month;
int day;
}Data;
int main()
{
Data data[10];
int a[13]={0,12,43,71,102,132,163,193,224,255,285,316,346};
int b[13]={0,12,43,72,103,133,164,194,225,256,286,317,347};//闰年时
int n=0,i,year;
scanf("%d",&year);
if(((year%4==0)&&(year%100!=0))||(year%400==0))//闰年时
{
for(i=1;i<=12;i++)
{
if((year*365+(year-1)/4-year/100+year/400+b[i])%7==5)
{
data[n].month=i;
data[n].day=13;
n++;
}
}
}
else//平年
{
for(i=1;i<=12;i++)
{
if((year*365+year/4-year/100+year/400+a[i])%7==5)
{
data[n].month=i;
data[n].day=13;
n++;
}
}
}
if(n==1)
{
printf("There is %d Black Friday in year %d.\nIt is:\n",n,year);
printf("%d/%d/%d\n",year,data[0].month,data[0].day);
}
else
{
printf("There are %d Black Fridays in year %d.\nThey are:\n",n,year);
for(i=0;i<n;i++)printf("%d/%d/%d\n",year,data[i].month,data[i].day);
}
return 0;
}
2参考答案
#include<stdio.h>
void main()
{
int yijiao;
int wujiao;
int yiyuan;
int sum;
for(yiyuan=0;yiyuan<100;yiyuan++)
{
for(wujiao=0;wujiao<100;wujiao++)
{
for(yijiao=0;yijiao<100;yijiao++)
{
sum=yijiao+wujiao*5+yiyuan*10;
if((sum>=100)&&(sum%100==0)&&(18*yijiao==15*wujiao)&&(15*wujiao==20*yiyu
{
printf("%d,%d,%d,%d\n",yijiao,wujiao,yiyuan,sum/10);
break;
}
}
}
}
}