C语言入门——for循环语句的使用

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值