美发企业网站建设价格,企业产品微网站收费吗,在哪能学到网站建设,青岛网站设计如何做有一个类型的题目是找到输出图形的规律#xff0c;然后将其实现。观察下面的图形。你想想你该怎么输出这个图形呢? ABBB#includestdio.h
int main(){printf( A\n);printf(BBB\n);return 0;
}那么#xff0c;对于如下的图形#xff1a; ABB…有一个类型的题目是找到输出图形的规律然后将其实现。观察下面的图形。你想想你该怎么输出这个图形呢? ABBB#includestdio.h
int main(){printf( A\n);printf(BBB\n);return 0;
}那么对于如下的图形 ABBB
CCCCC#includestdio.h
int main(){printf( A\n);printf( BBB\n);printf(CCCCC\n);return 0;
}前面分别对应的是输出两层和三层的情况。我们输入需要输出的层数n当n≤5的时候我们可以枚举n的不同取值然后分别输出。如果需要输出更多层按照上面的方法确实可以完成任务但是对应的代码量会更大编码时间也更长。因此当n5的时候我们就需要一些其他的方法来简化代码实现。 仔细观察会发现第i层输出的前面的空格数尾部不需要输出空格和字符的个数都是有规律的可以根据n和i计算出来。对应输出的字符的ASCI码是‘A’i-1其中‘A’可以直接表示字符A的ASCI码。然后我们就可以直接用循环控制来输出了。
给定一个层数n 输出字母三角形。 输入格式 输入一个整数n0n26)表示字母三角形 的层数。 输出格式 按照题目播述输出字母三角形。 样例输入1
2样例输出1 A
BBB样例输入2
3样例输出2 ABBB
CCCCC#includeiostream
#includestring
using namespace std;
int main(){int n;cinn;for(int i1;in;i){string space string(n-i, );string ch string(2*i-1,Ai-1);coutspacechendl;}return 0;
}这次我们输出一个稍微复杂的三角形输入一个大写字母A-Z)或者一个数字1-9。 比如输入是F的时候编出 AABAABCBAABCDCBAABCDEDCBA
ABCDEFEDCBA
输入是3的时候输出 1121
12321输入格式 输入一个数字1-9或者一个大写字母
#includeiostream
using namespace std;
int main(){char c;cinc;if(cAcZ){for(int i1;ic-A1;i){for(int j1;jc-A1-i;j){cout ;}for(int j1;ji;j){cout(char)(Aj-1);}for(int ji-1;j1;j--){cout(char)(Aj-1);}coutendl;}}else{for(int i1;ic-11;i){for(int j1;jc-11-i;j){cout ;}for(int j1;ji;j){cout(char)(1j-1);}for(int ji-1;j1;j--){cout(char)(1j-1);}coutendl;}}return 0;
}假设地图是一个n行rn列的方格地图地图等个 格子·代表一个宝题。比如2行2列的地图如下
**
**要建的房子如下
--
|*|*|
--
|*|*|
--现在告诉你地图的行列数 画出房子的设计图 输入格式 一行两个整数n,m(0n,m≤50)分别表示地图行数和列数。 输出格式 按照题目中要求的格式输出地图。 样例输入1
2 2样例输出1
--
|*|*|
--
|*|*|
--样例输入2
3 4样例输出2
----
|*|*|*|*|
----
|*|*|*|*|
----
|*|*|*|*|
----#includeiostream
using namespace std;
int main(){int n,m;cinnm;for(int i1;in;i){for(int j1;jm;j){cout-;}coutendl;for(int j1;jm;j){cout|*;}cout|endl;}for(int j1;jm;j){cout-;}coutendl;return 0;
}字符串
字符串是编程语言中非常常用的一种数据类型字符串的处理也是各类算法竞赛中考察较多的一类题型。字符串简单地说就是由若干个字符连接在一起的串。 在C/C语言中规定末尾以\0结束的字符型数组称为字符串。这里值得强调的是只有以\0结束的才能算字符串否则只 能算作字符型数组。这在C/C中算是一种标准。也只有以\0结束的字符数组才能以“%s”的方式用printf输出否则输出的结果会非常奇怪。自己在char数组上构造一个字符串的时候忘记在末尾加\0可能会导致访问非法内存的错误。 字符串处理函数 很多情况下都需要对字符串进行复制、剪切、比较等等操作。这些操作理论上都可以自己写代码实现但是由于这些操作经常使用每次都要实现一遍太繁琐现在的大部分语言都提供了基础了字符串操作的库函数。C/C的字符串处理相关的函数在string.h头文件中。
字符串复制
C/C中函数原型charstrcpy(chardestin,char*source),将source字符串复制到destin。 C/C语言示例程序
#includestdio.h
#includestring.h
int main(){char name[10];char *stradadad;strcpy(name,str);printf(%s\n,name);return 0;
}字符串拼接
C/C中函数charstrcat(chardestchar*source)可以将source字符串拼接到dest后面。注意dest必须有足够的空间来容纳拼接出的字符串。 C/C示例程序
#includestdio.h
#includestring.h
int main(){char dest[25];char *str1 hello, *str2 ,*str3 jisuanke;strcat(dest,str1);strcat(dest,str2);strcat(dest,str3);printf(%s\n,dest);return 0;
}c字符串可以直接用号连接
#includeiostream
using namespace std;
#includestring.h
int main(){
char dest[25];string s1a;string s2b;couts1s2endl;return 0;
}字符串比较
C/C中函数int strcmpcharstr1charstr2)从第一个字符开始逐字符比较两个字符串的ASCll码。如果下标为i的字符不相等则函数返回str1[i]-str2[i]。如果两个字符串完全相同则会返回0。
#includestring.h
#includestdio.h
int main(){char *str1cd,*str2abc;int res strcmp(str1,str2);if(res0){printf(%s is greater than %s\n,str1,str2);}else if(res0){printf(%s is same as %s\n,str1,str2);}else{printf(%s is less than %s\n, str1,str2);}return 0;
}对称字符串
A1: A
A2ABA
A3: ABACABA
A4: ABACABADABACABA
. . .对于给定的N你能根据规律输出AN吗 输入格式 仅有一个数NN≤20。 输出格式 一行字符串表示字符串AN。 样例输入
2样例输出
ABA#includestdio.h
#includestring.h
char res[5000000];
int main(){int n;scanf(%d,n);int len 0;for(int i1;in;i){strcat(reslen1,res);res[len]Ai-1;len strlen(res);}printf(%s\n,res);return 0;
}寻找字符串
在一个字符串里找另一个字符串出现了多少次 找到的结果可以重叠 如一号字符串为abababa 二号字符串为aba 二号字符串在一号字符串中出现了三次 输入格式
输入包含两行第一行为一号字符串第二行为二号字符串 两个字符串肯能包含除换行、回车、\0外的任何字符两个字符串的长度均不大于1000 样例输入1
i miss you!
you样例输出1
1#includecstdio
#includecstring
char s1[1005],s2[1005];
int main(){fgets(s1, 1004, stdin);//fgets会读入换行符fgets(s2,1004,stdin);//用gets就不用-1int len1 strlen(s1)-1,len2strlen(s2)-1;int ans0;for(int i0;ilen2-1len1;i){bool matched true;for(int j0;jlen2;j){if(s1[i j] ! s2[j]){matchedfalse;break;}}if(matched){ans;}}printf(%d,ans);return 0;
}gets 函数它的任务是从 stdin 流中读取字符串直至接收到换行符或 EOF 时停止并将读取的结果存放在 buffer 指针所指向的字符数组中。这里需要注意的是换行符不作为读取串的内容读取的换行符被转换为 null(’\0’) 值并由此来结束字符串。即换行符会被丢弃然后在末尾添加 null(’\0’) 字符。 注意gets函数由于没有指定输入字符大小所以会无限读取一旦输入的字符大于数组长度就会发生内存越界从而造成程序崩溃或其他数据的错误。
相对于 gets 函数fgets 函数最大的改进就是能够读取指定大小的数据从而避免 gets 函数从 stdin 接收字符串而不检查它所复制的缓冲区空间大小导致的缓存溢出问题。 fgets(str, N, stdin) ; str 是指字符数组N指 最大读入字符数stdin 表明读取的哪个文件如果是从键盘上读入数据可以使用 stdin 作为该参数。
fgets只能读取N-1个字符包括最后的换行符’\n’读完结束后系统将自动在最后加’\0’gets读完结束后系统自动会将’\n’置换成’\0’。
当你从键盘上输入 N-1 个字符包括’\n’时,那么字符串str会以 ‘\n\0’ 结尾。这就造成了strlenstr比你想象的大 1 当你从键盘上输入N-1个字符包括’\n’时那么字符串str会以’\0’结尾。
算出生日在星期几
输入格式 输入三个正整数分别表示年、月、日。保证输入 年份合法。 输出格式 输出星期几。 用Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Monday表示星期几 样例输入1
1 1 1样例输出1
Monday样例输入2
2016 11 29样例输出2
Tuesday#includeiostream
#includestring
using namespace std;
int whatday(int y,int m,int d){//返回正确的日期用0~6表示 星期 1 - 7int ans 0;for(int i1;iy;i){if((i % 100 !0i%40)||i%4000){ans366%7;ans%7;}else{ans365%7;ans%7;}} for(int i1;im;i){if(i1||i3||i5||i7||i8||i10||i12){ans31%7;ans%7;}else if(i4||i6||i9||i11){ans30%7;ans%7;}else if((y%100!0y%40)||y%4000){ans29%7;ans%7;}else{ans28%7;ans%7;}}ans(d-1)%7;ans%7;return ans;
}
string weekday[7]{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};
int main(){int y,m,d;cinymd;coutweekday[whatday(y,m,d)]endl;return 0;
}也可以直接用公式
#includeiostream
#includestring
using namespace std;
int whatday(int y,int m,int d){
if(m2){m12;y--;}//返回正确的日期用0~6表示 星期 1 - 7return(d2*m3*(m1)/5yy/4-y/100y/400)%7;
}
string weekday[7]{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};
int main(){int y,m,d;cinymd;coutweekday[whatday(y,m,d)]endl;return 0;
}恋爱纪念日
一对情侣想知道他们第100天、200天 . . .纪念日 输入格式 输入4个整数ymd,k表示他们在一起的日期保证是一个1900年1月1日以后的日期求他们的k0k10000天纪念日。 输出格式 输出格式按照yyy-m-dd的格式输出k天纪念日的日期。月份和天数必须各输出2位。保证最后答案年份不超过4位。 样例输入1
2016 10 1 100样例输出1
2017-01-09样例输入2
2017 1 1 10样例输出2
2017-01-11#includestdio.h
int main(){int y,m,d,k;int day[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};scanf(%d %d %d %d,y,m,d,k);for(int i1;ik;i){if((y%40)y%100!0||y%4000){day[2]29;}else{day[2]28;}d;if(dday[m]1){d1;m;}if(m13){m1;y; }}printf(%04d-%02d-%02d,y,m,d);return 0;
}节假日
日历有阳历公历和明历农历之分。每 都有法定节假日这些分成三类——双休、阳历假日、阴历节假日。 1.双休 1周六和周日2天 2.阳历节假日 1元且阳历每年1月1日放假1天 2劳动节阳历每年5月1日放假1天 3国庆节阳历每年10月1日放假3天 4圣诞节阳历每年12月25日放假1天 3.阴历节假日 1春节阴历每年1月1日放假3天 2清明节阳历每年4月4-6日之间的某天放假1天 3端午节阴历每年5月5日放假1天 4中秋节阴历每年8月15日放假1天 当节假日和双体重合时双休不延后也不提前保证节假日之间不会重合。现在给你属年的所有明历节假日的阳历日期以及当年的1月1日是星期几请你计算出这一年阳历1月日到12月31日放了多少天假包括双休、阳历节假日和明历节假日。 输入格式 第一行输入年份1900y≤2050。 接下来4行每行输入两个整数m、d.依次表示春节、清明节、端午节和中秋节的阳历日期。最后一行一个整数表示当年1月1号是星期几一周内的第几天每周从星期一开始计数即星期一为第一天。 输出格式 输出一个整数表示当年放假的天数。 样例输入1
2017
1 28
4 4
5 30
10 4
7样例输出
113#includestdio.hint mm[10]{1,5,10,10,10,12};int dd[10]{1,1,1,2,3,25};int day[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};void nextday(int y,int m,int d){d;if(dday[m]1){d1;m;}}int main(){int y,w,m,d,sf,ans;scanf(%d,y);for(int i6;i9;i){scanf(%d%d,mm[i],dd[i]);}scanf(%d,w);if((y%100!0y%40)||y%4000){day[2];}m1;d1;sf0;ans0;while(m13){if(mmm[6]ddd[6]){ans;sf2;}else if(sf){ans;sf--;}else if(w6||w7){ans;}else{for(int i0;i10;i){if(mmm[i]ddd[i]){ans;break;}}}nextday(y,m,d);w;if(w8){w1;}}printf(%d\n,ans);return 0;}