for循环语句的使用
一般格式为
for(表达式1,表达式2,表达式3)
{
循环体;
}
表达式1是循环初始表达式,
表达式2是循环条件表达式,
表达式3是循环调整表达式
表达式1,表达式2,表达式3都可以省略,但是在for循环里面分号是不能省略的
【例如】
for(;;;)
{
循环体;
}
相当于
while(1)//表示永真
{
循环体;
}
【练习】
1、使用for循环打印9*9的乘法口诀。
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++){
for(j=i;j<=9;j++)
{
printf("%d*%d=%-2d ",i,j,i*j);
}
printf("\n");
}
return 0;
}
2、打印下面形状的三角形
#include<stdio.h>
int main()
{
int i,j,k;
for(i=1;i<=4;i++){
for(j=1;j<=i-1;j++){
printf(" ");
}
for(k=1;k<=5-i;k++){
printf("* ");
}
printf("\n");
}
return 0;
}
3、打印一个‘M’字形的图形。
要求:根据从键盘输入的值来确认图形的大小。
#include<stdio.h>
int main()
{
int n,i,j,k;
loop: printf("请输入边长n的值(3~20): ");
scanf("%d",&n);
if(n>20||n<3){
printf("请输入正确的n值!\n");
goto loop;
}
else{
for(i=1;i<=n;i++){
for(k=1;k<2*n;k++){
if(k==1||k==i||k==2*n-i||k==2*n-1){
printf("*");
}
else{
for(j=1;j<2;j++){
if(j!=k){
printf(" ");
}
}
}
}
printf("\n");
}
}
return 0;
}
4、求最长对称子串问题。
对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。
输入格式:
输入在一行中给出长度不超过1000的非空字符串。
输出格式:
在一行中输出最长对称子串的长度。
输入样例:
Is PAT&TAP symmetric?
输出样例:
11
#include<stdio.h>
#include<string.h>
int main ()
{
char c[1002];
int max=0;
int i,j;
int t,flag=0;
gets(c);
for (i=0;c[i]!='\0';i++)//一个一个字母的检索
{
t=0;
for (j=i;c[j]!='\0';j++)//从当前的字母开始向后检索
{
if (c[i]==c[j])
{
while (1)
{
if (c[i+t]==c[j-t])
{
t++;
}
else
break;//结束
if(j-t<0) break;//保证不能超出范围 如超出,跳出。
}
if (t>max)
max=t;//记录最大值
}
}
}
printf ("%d\n",max);
return 0;
}
5、字符串匹配问题
Peter 以前是一个作家,每天要写很多文章。随着年龄增加,他的记性也不好了。
有时候刚写过的东西,他就忘了。于是他请我们帮他编写一个程序,告诉他是否曾经写过某
个单词。如果写过,则告知匹配的第一个字符所在位置;如果没有写过,则告知没有写过。
运行结果示例:
他写过的文字:
Iamawriter,whataboutyou?
查询单词:what
查询结果:12
#include<iostream>
using namespace std;
int main(){
int i,j;
char orgstr[100],substr[100];
cout<<"她写的字"<<endl;
cin>>orgstr;
cout<<"查询的单词"<<endl;
cin>>substr;
for(i=0;orgstr[i]!='\0';i++){
for(j=0;substr[j]!='\0';j++){
if(orgstr[i+j]!=substr[j]){//开始匹配,若不相同就跳出循环
break;
}
}
if(substr[j]=='\0')
break;
}
cout<<"查询结果:";
if(orgstr[i]=='\0'){
cout<<"Peter没有写过这个单词。"<<endl;
}
else{
cout<<i+1<<endl;
}
return 0;
}