//
// main.c
// 12.12
//
// Created by lanqs on 14/12/12.
// Copyright (c) 2014年 . All rights reserved.
//
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int he(int *a,int *b);
int ti12(int year,int month,int day);
float ti15(float *a,char *c,float *b);
int main(int argc, const char * argv[]) {
//做题做得发吐。。。
//未完成的题 5,7,8,9,10,11,12(没做完,没考虑全面),17没有找出规律,18(可以输出有几个单词但是和题意要求不符合),19,20(我晕以前做过的都会忘记,真的是不行啊)
#pragma mark - 1、1-100之间含有7的数 &
// for (int i = 1;i <= 100;i ++) {
// //个位是7或者10位是7
// if ( ((i+3) % 10 == 0 )|| i / 10 == 7) {
// printf("%d ", i);
// }
//
// }
#pragma mark - 2、编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。
// char a[]={0};
// scanf("%s",a);
// for (int i = 0; a[i]!='\0'; i++) {
// if (( a[i] > 'A' && a[i] <= 'Z')||( a[i] >= 'a' && a[i] <= 'z' )) {
// a[i]+=1;
// printf("%c",a[i]);
// printf("%c",a[i]+1);
// printf("%c",a[i]+2);
// }
// }
#pragma mark - 3、模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。
// int n = 100,A=0,B=0,C=0,D=0;
// for (int i = 0; i < n; i ++) {
// int a=arc4random() % 100;
// if (a >= 3 * n/5 && a < 4 * n /5) {
// A ++;
// }else if (a >= 2*n/5 && a < 3 * n/5) {
// B ++;
// }
// else if (a >= n / 5 && a < 2*n/5) {
// C ++;
// }
// else if (a < n / 5) {
// D ++;
// }
// }
// printf("%d %d %d %d\n",A,B,C,D);
// int a[4];
// a[0]=A;
// a[1]=B;
// a[2]=C;
// a[3]=D;
// for (int i =0; i <4; i ++) {
// for (int j =0; j <4; j ++) {
// if (a[i]>a[j]) {
// int temp =a[i];
// a[i]=a[j];
// a[j]=temp;
// }
// }
// }
// for (int i = 0; i< 4; i++) {
// printf("%d ",a[i]);
// }
// insert code here...
#pragma mark - 4、编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。
// float a,b;
// char c;
// float sum=0;
// printf("请输入四则运算:");
// scanf("%f%c%f",&a,&c,&b);
// if (c == '+') {
// sum = a + b;
// printf("%.2f\n",sum);
// }else if(c == '-'){
// sum = a - b;
// printf("%.2f\n",sum);
// }else if(c == '*'){
// sum = a * b;
// printf("%.2f\n",sum);
// }else if(c == '/'){
// sum = a / b;
// printf("%.2f\n",sum);
// }
// else{
// printf("你的输入不正确!\n");
// }
#pragma mark - 5、题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
//这道题看起来就烦。。暂时不且做它
// int a,i;
// if (i <= 10 && i >= 0) {
// a=a+0.1*a;
// }else if(10 < i && i< 20){
//
// }else if(20 <= i && i<= 40){
//
// }else if(40 < i && i< 60){
//
// } else if(600 < i && i< 100){
//
// }
#pragma mark - 6、任何一个自然数m的立方均可写成m个连续奇数之和。例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 编程实现:输入一自然数n,求组成n的3次方的n个连续奇数。
//纯粹数学题。。。
// int n=4, a=0;
// for (int i = 0; i < n; i ++) {
// a=(n*n-(n-1))+2*i;
// printf("%d ",a);
// }
#pragma mark - 7、写出浮点数的高精度算法,精确计算浮点数(小数点后12位,假定浮点数均小于1),0.000001 * 0.00001打印出:0.00000000001
//(这题没做起)
// double a=0.000001;
// double a1 = 0.00001;
// double c=a1;
// double d=0.0;
// int number = 0,number1 = 0;
// while (a < 1) {
// a = a * 10;
// number ++;
// a1 = a1 * 10;
// }
// while (c < 1) {
// c = c * 10;
// number1 ++;
// }
//
//// printf("%d %d ",number,number1);
// int b=(int)(a*a1);
// printf("%lf", d);
// for (int i = 0; i < number1-1; i++) {
// printf("0");
// }
// printf("%d",b);
#pragma mark - 8、一人岁数的3次方是四位数,四次方是六位数,并知道此人岁数的3次方和4次方用遍了0~9十个数字。编写一程序求此人的岁数。
#pragma mark - 9、至少写出2中方法,求10000个浮点数中最大的100个,按比较他们的运算量。
//生成10000个随机数
// float a[10000]={0};
// for (int i = 0; i < 10000; i ++) {
// a[i] =arc4random() %10000;
// }
// //排序后取前100项
// for (int i = 0; i <10000; i ++) {
// for (int j = i; j < 10000; j ++) {
// if (a[i] < a[j]) {
// int temp = a[i];
// a[i] = a[j];
// a[j] = temp;
// }
// }
// }
// for (int i = 0; i < 100; i ++) {
// printf("%.2f\t",a[i]);
// }
//直接比较
#pragma mark - 10、写一个函数,将输入的2个字符串完全相同且长度大于2个部分全部去掉。
// char a[]="hello";
// char b[]="llo1";
// int n=0;
// for (int i = 0 ; a[i] != 0; i ++) {
// for (int j = 0; a[j] != 0; j ++) {
// if (a[i] == a[j] && a[i+1] == b[j+1] && a[i+2] == b[j+2]) {
// for (int n = 0; n <strlen(a); n ++) {
// }
// }
// }
//
// }
#pragma mark - 11、求一个函数,返回一个整形数组中,出现次数最多的数字(每个数的每一位上的数字)。
// int a[]={1,2,3,4,5,6,7,8,9,2,1,2,2};
//// int b[]={0};
// int number=0;
// for (int i =0; i < 11; i ++) {
// for (int j = i; j <11; j ++) {
// if (a[i] == a[j] && i !=j) {
// //这里是求的两个数
// }
// }
// }
// printf("%d",number);
#pragma mark - 12、日期问题:1、求任意2个人出生日期的天数差 2、已知2013年8月12日星期一,求任意一天星期几。 3、任意一个时间,求其到3个月后的第一个星期天要经过多少天。
//我晕,就算同一年的天数差算了,太难算了啊。。。(以后有兴趣再算吧。)
// int year1,month,day,year2;
// int a1,a2,a3,a4;
// //第一小问、、
//// printf("请输入两个认得出生日期:");
//// scanf("%d%d%d",&year1,&month,&day);
//// a1=ti12(year1, month, day);
//// scanf("%d%d%d",&year2,&month,&day);
//// a2=ti12(year2, month, day);
////
//// printf("%d",a3);
//
// //第二小问(一样的只算了2013年的)
// //2013 8 12 号是那年的224天
// scanf("%d%d%d",&year1,&month,&day);
// a1=ti12(year1, month, day);
// a4=a1-224;
// switch (a4 % 7) {
// case 0:
// printf("星期一");
// break;
// case 1:
// printf("星期二");
// break;
// case 2:
// printf("星期三");
// break;
// case 3:
// printf("星期四");
// break;
// case 4:
// printf("星期五");
// break;
// case 5:
// printf("星期六");
// break;
// case 6:
// printf("星期日");
// break;
// }
// //第三问,好嘛,不想写了。。
#pragma mark - 13、编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。
// printf("请输入四则运算:");
// float a,b;
// float sum = 0;
// char c;
// scanf("%f%c%f",&a,&c,&b);
// if (c == '+') {
// sum = a + b;
// printf("%.2f",sum);
// }else if (c == '-'){
// sum = a - b;
// printf("%.2f",sum);
// }else if (c == '*'){
// sum = a * b;
// printf("%.2f",sum);
// }else if (c == '/'){
// sum = a / b;
// printf("%.2f",sum);
// }else{
// printf("你的输入不正确!");
// }
#pragma mark - 14、输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。 如输入:56439,输出:5位数 5,6,4,3,9 9,3,4,6,5
// char a[]={};
// scanf("%s",a);
// printf("%lu\n",strlen(a));
// puts(a);
// for (int i = 0; a[i] != '\0'; i++) {
//
// //就直接倒着输出就行了,,还用什么转换。
// printf("%c",a[strlen(a)-i-1]);
// }
#pragma mark - 15、使用函数实现数值字符串的加减乘除运算。
// printf("请输入四则运算:");
// float a,b;
// char c;
// scanf("%f%c%f", &a,&c,&b);
// ti15(&a, &c, &b);
// printf("%.2f",ti15(&a, &c, &b));
#pragma mark - 16、编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排列,然后将这两个数组合并成一个升序数组。
// int a[] = {4,3,2,1,5};
// int b[] = {0,13,8,3,5};
// int a1;
// //输入两个数
// for (int i = 0; i < 5; i ++) {
// scanf("%d",&a1);
// a[i]=a1;
// }
// printf("请输入另外5个数:");
// for (int i = 0; i < 5; i ++) {
// scanf("%d",&a1);
// b[i]=a1;
// }
// //////
// int c[] = {0};
// //第一个数组排序
// for (int i = 0; i < 5; i ++) {
// for (int j = i; j < 5; j ++) {
// if (a[i] > a[j]) {
// int temp = a[i];
// a[i] = a[j];
// a[j] = temp;
// }
// }
// printf("%d ",a[i]);
// }
// printf("\n");
// //第二个数组排序
// for (int i = 0; i < 5; i ++) {
// for (int j = i; j < 5; j ++) {
// if (b[i] > b[j]) {
// int temp = b[i];
// b[i] = b[j];
// b[j] = temp;
// }
// }
// printf("%d ",b[i]);
// }
// printf("\n");
// for (int i = 0; i < 5; i ++) {
// c[i] = a[i];
// c[i+5] = b[i];
//
// }
// //排序
//
// for (int i = 0; i < 10; i ++) {
// for (int j = i; j < 10; j ++) {
// if (c[i] > c[j]) {
// int temp = c[i];
// c[i] = c[j];
// c[j] =temp;
// }
// }
//
// printf("%d ", c[i]);
// }
#pragma mark - 17、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。
// //(没有找出规律)
// int s[13]={0,0,0,0,0,0,0,0,0,0,0,0,0};
// int count=1,i;
// //n为什么会等于6?
// //第几次的意思,但是为什么是第6次呢?(手算得话是运行了7*13次,第6次只有两个了)
// for (int n = 0;n < 7; n++){
// for(i = 0;i < 13;i ++)
// //如果等于第一个 and 每次循环加1余3等于0
// if(s[i] == 0 && count ++ % 3 == 0)
// //确定报了3的数设定标识
// s[i] = 1;
// }
//
//
//
// for(i=0;i<13;i++)
// if(s[i]==0)
// printf("叛徒的序号是%d\n",i+1);
#pragma mark - 18、编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。
// char a[]="hhaa adad sdasdasdsa";
// int flag = 1;
// int number =0;
// for (int i = 0; a[i] !='\0'; i ++) {
// if (a[i] == ' ') {
// flag = 1;
// }else if(flag == 1){
//// if ((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z')) {
//// flag = 2;
//// }
// number++;
// flag = 0;
// }
//
// }
// printf("%d\n",number);
#pragma mark - 19、已知一个标准随机数函数返回0-5,求一个标准随机数函数返回0-7(只使用加减乘除运算)。
//看起来简单。。。晕了
// int a=arc4random() % 6;
//
//
//
// printf("%d",a);
#pragma mark - 20、数学等式问题:1、有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。 2、有一个数学等式:ABCD*E= DCBA,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。
// int a,b;
// for (int i = 11 ; i < 100; i ++) {
// for (int j = 11; j < 100; j ++) {
// a = (i / 10) + (i % 10) * 10;
// b = (j / 10) + (j % 10) * 10;
//
// if (i * j == a * b && (j / 10) != (j % 10) && (i / 10) != (i % 10) && i <j) {
// printf("%d %d ", i ,j);
// }
// }
// }
//⊙﹏⊙b汗哪天想做了再做=-=晕了
// 21、平面问题:
// 1、已知平面上三个点:(7,1)、(4,6)、(5,8),判断这三点组成的三角形是何种三角形(锐角,直角,钝角)
// 2、对(1)问中的三角形,给出它的外接圆半径;
// 3、已知平面上6个点的坐标为:(7,1)、(4,6)、(5,8)、(6,2)、(3,9)、(2,7),试求覆盖这6个点的覆盖圆最小半径。
//
//
//
//
// 21、编程求1000!尾部有多少个0.
//
// 22、随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
//
// 23、定义一个结构体变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出。
// 23A、建立一个链表,每个结点包括:学号、姓名、性别、年龄,输入一个学号,如果链表中的结点包括该学号,则输出该结点内容后,并将其结点删去。
//
// 24、实现一个构建双向链表的函数。假定一个双向链表某个方向有一个指向产生错误,实现一个函数,快速将其改正。
//
// 25、建立描述颜色(Red、Green、Blue、Alpha),并实现3个函数,红->蓝,任意色->白,任意色->黑或白。
//
// 26、实现一个二维数组的冒泡法排序函数。
//
// 27、实现一个函数,将一个二维数组对角线的右上部分置为0。
//
// 28、编程解决如下数学问题:有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?要求以如下格式打印出分水步骤。
// a12 b8 c5
// 12 0 0
// * * * (“*”表示当前状态下每个容器的盛水量)
// ......
// 6 6 0
//
//
// 29、编写一个人机猜数游戏,游戏玩法如下:
// 由计算机“想”一个四位数(不含重复数字),请人猜这个四位数是多少。人输入四位数字后,计算机首先判断这四位数字中有几位是猜对了,并且在对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数是多少为止。
// 例如:计算机“想”了一个“1234”请人猜,可能的提示如下:
// 人猜的整数 计算机判断有几个数字正确 有几个位置正确
// 1122 2 1
// 3344 2 1
// 3312 3 0
// 4123 4 0
// 1243 4 2
// 1234 4 4
//
return 0;
}
int ti12(int year,int month,int day){
int days=0;
int a[12]={0,0,31,30,31,30,31,31,30,31,30,31};
a[0]=day;
if ((year %4 == 0 && year % 100 == 0) || year % 400 == 0) {
a[1]=29;
}else{
a[1]=28;
}
if (month == 2) {
a[1]=31;
}
for (int i = 0; i < month; i ++) {
days +=a[i];
}
return days;
}
float ti15(float *a,char *c,float *b){
float sum = 0;
if (*c == '+') {
sum = *a + *b;
return sum;
}else if (*c == '-'){
sum = *a - *b;
return sum;
}else if (*c == '*'){
sum = *a * *b;
return sum;
}else if (*c == '/'){
sum = *a / *b;
return sum;
}
return sum;
}
c语言题集-综合提高(部分答案)
最新推荐文章于 2024-11-10 12:28:40 发布