A. 急求,一个简单的c语言程序,要求至少60行,要有些知识点,最好是有创意的。
显示年日历的程序
1、 main1.cpp文件清单:
#include <iostream.h>
#include "head1.h"
#include <iomanip.h>//setw()函数的头文件
extern int year;//全局变量
void main()
{
int i;
cout<<"请输入您要查询的年份:";
cin>>year;
int n=weekday(year);//调用weekday函数
for(i=1;i<=12;i++)//总共的月份 12
{
int lemp=1;
cout<<endl<<year<<"年"<<setw(27)<<i<<"月"<<endl;
cout<<"-----------------------------------"<<endl;
char weekd[7][20]={"Mon","Tue","Wed","Thu","Fri","Sta","Sun"};//记录星期一到星期日
for(int j=0;j<7;j++)
cout<<setw(5)<<weekd[j];//setw(5)表示紧跟其后的数据项的输出占5个字符宽
cout<<endl<<"-----------------------------------"<<endl;
for(int k=1;k<n;k++,lemp++)//输入每月第一天的起始位置,用空格补充
cout<<setw(5)<<" ";
int m=monthday(i);//调用monthday函数
for(int d=1;d<=m;d++,lemp++) //输出每月的天数
{
cout<<setw(5)<<d;
if(lemp==7) //控制一行输出到星期天,如果到星期天则重新计数
{
cout<<endl;
lemp=0;
}
}
n=lemp%7; //当输出完一个月后,记录这个月的最后一天在哪,寻找下个月的
if(n==0) //第一天的起始位置
n=7;
cout<<endl<<"-----------------------------------"<<endl<<endl<<endl;
}
}
2、isl.cpp文件清单:
#include <iostream.h>
int isleapyear(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;//闰年返回值为1
else
return 0;
}
3、weekday.cpp文件清单:
#include <iostream.h>
int weekday(int year)
{
int n=year-2007;//已知2007年的元旦刚好是星期一
n=n+(n-1)/4+1;// 判断,以每年52个整星期计算该年比2007年多出来的天数
n=n%7;
if(n==0)
return 7; //返回输入的年份的元旦是星期几
else
return n;
}
4、monthday.cpp文件清单:
#include <iostream.h>
#include "head1.h"//需要调用head1中的函数
int year;
int monthday(int i)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
return 31;
else if(i==2)
{
if(isleapyear(year)==1)//调用isleapyear函数
return 29;
else return 28;
}
else return 30;
}5、head1.h文件清单:
int isleapyear(int year);//函数原型声明
int weekday(int year);//函数原型声明
int monthday(int i);//函数原型声明
B. C语言70行程序,在线求。要简单点的。最好附上解释说明该函数什么作用
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>
#defineLIM_LEN30
voidbad_exit(void);
/*-----十六进制字符串转化为十进制-------chapter2_2.3---------------*/
/*-------首先定义一个返回值为int型的幂函数pow1-------*/
intpow1(intm,intn)
{
inti;
intx=1;
for(i=0;i<n;i++)
{
x*=m;
}
returnx;
}
/*-------首先定义一个返回值将十六进制转化为int型的函数htoi-------*/
inthtoi(chars[])
{
intn,m,i;
intcount=0;
intmzs=0;//控制幂函数的指数
charc;
intch[LIM_LEN];
enummark{NO,YES};//定义标记符号
enummarkflag;
i=0;
n=strlen(s);//字符串的长度,属于string.h头文件库中
//printf("n=%d ",n);
if(s[i]=='0')//除去字符串中的0X或者0x
{
i++;
if(s[i]=='x'||s[i]=='X')
{
i++;
}
}
//printf("i=%d ",i);
//printf("%d ",i);
flag=YES;
//printf("%d ",YES);
for(i,m=0;i<n&&flag==YES;i++)//将字符串转化为相应的十六进制数字并放入一个int数组中
{
c=s[i];
if(isdigit(c))
{
ch[m]=s[i]-'0';
}
elseif(c>='a'&&c<='f')
{
ch[m]=s[i]-'a'+10;
}
elseif(c>='A'&&c<='F')
{
ch[m]=s[i]-'A'+10;
}
else
{
flag=NO;
atexit(bad_exit);//参数为函数指针,虽然在内部定义但是还需要在文件中函数声明,要不就是错误
exit(EXIT_FAILURE);//参数EXIT_FAILURE和EXIT_SUCCESS
//puts("theinputisn't0-9ora-f!");//打印但是会计算一个溢出错误值,上述方法可避免
}
m++;
}
//printf("i=%d ",i);
//printf("m=%d ",m);
m=m-1;//m多计数一次,需要退回一次--------------->每次一定考虑是否多计数!!!
for(m;m>=0;m--)//累加来求出int型的值
{
count+=ch[m]*pow1(16,mzs);
mzs++;
}
returncount;
}
/*-------错误退出注册函数给atexit()使用-------*/
voidbad_exit(void)
{
puts("theinputisn't0-9ora-f!");
}
/*-------首先定义一个返回值将十六进制转化为int型的函数htoi的驱动函数-------*/
voidhtoi_test()
{
intcount;
charn_nums[]="0X12a";//298
count=htoi(n_nums);
printf("%d ",count);
}
/*-----十六进制字符串转化为十进制-------chapter2_2.3------over---------*/
C. c语言程序详解
while(a<15)a++; 出循环时a为15
while(b++<15); b++为后加,当b为15是退出循环,之后因为b++,所以b还会再自加1变为16
所以结果即为15,16
D. 大家帮忙看看c语言程序,最好写上每行注释
#include<stdio.h>// 系统函数
#include<time.h>//时间函数
#define MAX 32 //定义函数MAX=32
long queen[MAX]={0},queenl = 1; // 长数组queen MAX内元素为全零,queenl 这个函数为1
int count =0,label = 0;//整形 函数 定义数值
FILE *txt; 文件格式
void Answers(long row, long ml, long mr)
无返回值函数(long是一种数字的格式,有long short double float)
{
if(row != queenl)//条件
{
long pos = queenl & ~(row|ml|mr);同时满足两个条件下 pos等于这个结果
while(pos)//循环
{
long p = pos & -pos;// p等于同时正负pos,也就是说,怎么说好呢,你就理解为它是一个无法满足的条件,使之变成0,因为只有0是+-一体的
pos-=p; // pos=pos -p
Answers(row|p, (ml|p)>>1, (mr|p)<<1);
}
}
else
count++; count= count +1
}
void Answersp(int n,long row, long ml, long mr)//同理
{
if(row != queenl)
{
long pos = queenl & ~(row|ml|mr);
while(pos)
{
long p = pos & -pos;
pos-=p;
int i = 0;
while(p>>i)i++; //当满足p>>0时 i=i+1,但是注意这句话有点问题,你少了一对大括号,循环语句没有循环的范围,这样的话循环的只有queen【n】=i这句话
queen[n] = i;
Answersp(n+1, row|p, (ml|p)>>1, (mr|p)<<1);
queen[n] = 0;
}
}
else
{
count++;
for(int j=0; j<label; j++)
fprintf(txt,"%d.",queen[j]);//出指令printf(“ “)是格式
fprintf(txt," ");
if(count%3 == 0)fprintf(txt,"\n");
}
}
int main()main函数,程序主体
{
double f,f1; 定义双精度浮点函数
char print= 'n' ,flag; 字符函数
printf("请输入1~32的之间的整数:"); 输出
while(label == 0 || label <= 1 || label >= 32) 同时满足三个条件执行循环,这个循环,其实就是流文件读取确保里面有东西
{
scanf("%d",&label); 读入
while((flag = getchar()) != 10);
这句循环条件2 steps| 1) flag = grther() 2) flag所获得的值不能等于10
if(label <= 0 || label <= 1 || label >= 32)
printf("非法输入!\n请输入1~31的之间的整数:\n");
}
printf("将%d皇后的解输出到answer.txt?(Y确定,任意键继续)\n",label);
scanf("%c",&flag);
print = flag;
while(flag != 10)flag = getchar();
printf("程序计算中,所需时间依问题规模而定,请耐心等待....\n");
for(int i=1; i<label; i++) 循环
queenl=1+(queenl<<1);
if(print == 'y' || print == 'Y')
{
if((txt=fopen("answer.txt","w"))==NULL) fopen是流文件读取
printf("answer.txt文件打开出错!\n");
else
{
f=time(NULL); null是系统函数,似乎是空值,这个记不清了,很多年没编辑C了,忘了
Answersp(0, 0, 0, 0);
f1=time(NULL);
f1 = f1-f;
fprintf(txt,"\n==%d问题的解总数有%d种==\n",label,count);
fprintf(txt,"用时%d分%d秒\n",(int)(f1/60),(int)((int)f1%60));
fclose(txt);流文件读取关闭
}
}
else
{
f=time(NULL);
Answers(0, 0, 0);
f1=time(NULL);
f1 = f1-f;
printf("\n==%d问题的解总数有%d种==\n",label,count);
printf("用时%d分%d秒\n",(int)(f1/60),(int)((int)f1%60));
}
printf("Program end.\nPress Enter key to exit!");
while((flag = getchar()) != 10);
}
大概的进行了标注,相同格式的语句就没有重复标记,希望你能理解
E. C语言程序设计,求各行程序的含义和意思,答辩用的,蟹蟹大佬
C语言实现简单的翻译功能
2018年04月25日 16:48:30火炎焱燚OOK阅读数 3813
题目描述:编写一个程序,依次输入英文与汉语拼音,输入两个“ * ”表示输入结束,再输入一段英语句子,打印出其对应汉语拼音。
要求:不得使用<string.h>头文件
题目中要求不得使用<string.h>提醒我们使用其中的函数来编写代码,不过函数的实现需要自己来思考,根据自己的需要可以调整原函数的功能。思路大致是:输入完毕后拿原结构体记录的英文内容与 a 中的单词逐个相比,若相同,则输出结构体中对应的汉语拼音。
#include <stdio.h>#include <stdlib.h>#define M 100struct tran //建立结构体,将英文与对应的汉语拼音存储在一起{char English[M];char Chinese[M];}n[M];int my_strlen(char a[]); //声明自定义测量数组长度的函数int my_strcmp(char* str1,char* str2); //声明自定义判断两个字符串是否相同的函数int main(){int i=1,j,k;char a[M],*p=a;printf("请首先输入英文,然后输入汉语拼音: ");while(n[i-1].English[0]!='*'||n[i-1].Chinese[0]!='*') //当输入两个“ * ”时输入终止{printf("请输入第%d组 ",i);scanf("%s%s",n[i].English,n[i].Chinese);i++;}printf("请输入一个句子 ");getchar(); //接收上一个回车,避免下一个scanf()无法输入scanf("%[^ ]",a);for(i=0;a[i]!='