for循环的基础及实际应用
for循环的基本调用
单个for循环
for循环是循环的一种类型,在实际应用中使用较为广泛。
首先回顾它的基本调用
for(i=1;i<n;i++){
printf("i");
}
改代码是指从一开始执行语句块中的内容,直到i=n时停止(i=n时不执行)
需要注意的是,i的值加一是在一次循环之后才加的一。
for循环的嵌套
for(i=1;i<n;i++){
for(q=1;q<n;q++){
printf("i");
}
这里其实很好理解,就是对for循环中的每一个i在做一个for循环。
需要注意:两次for循环中的变量要采用不同的变量,以免造成数据的混淆。
for循环的应用
遍历输入(输出)数组
#include<stdio.h>
int main()
{
int i,b,n=10;
int a[10]={0};
for(i=1;i<n;i++){
scanf("%d",&b);
}
for(i=1;i<n;i++){
printf("%d",a[i]);
}
return 0;
}
这个一般用于对数组的赋值以及输出数组中的元素。
输出矩阵
#include<stdio.h>
#include"math.h"//需要用pow函数
int main()
{
int n,i,p,a=1;
scanf("%d",&n);
for(i=0;i<pow(2,n);i++){
for(p=0;p<pow(2,n);p++){
if(p==pow(2,n)-1){
printf("%d\n",a);//处于变长末端时换行
}else{
printf("%d ",a);
}
}
}
return 0;
}
这里呢,是打印一个边长为2^n的正方形矩阵。
判断质数
int main()
{
int i,n,a;
a=1;
scanf("%d",&n);
for(i=2;i<n;i++){
if(n%i==0){
a=0;
}
}
if(a==1){
printf("n是质数");
}else{
printf("n不是质数");
}
return 0;
}
将n输入,将n对从2到n-1取余;如果a的值不变,说明n是质数。
用于排序(冒泡,选择,插入等)
void xuanzedzq(int *a,int n)
{
int i,j,k;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if (a[j]>a[i]){
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
}
//这里,上面的是从大到小,下面的是从小到大。
void xuanzexzq(int *a,int n)
{
int i,j,k;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if (a[j]<a[i]){
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
}
for(i=0;i<n;i++){
printf("%d",a[i]);
}
}
void maopao(int *a,int n)
{
int i,j,k;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if (a[j]<a[j+1]){
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
for(i=0;i<n;i++){
printf("%d",a[i]);
}
}
void charu(int *a,int n)
{
int i,j,k;
for(i=1;i<n;i++){
if (a[i]<a[i-1]){
k=a[i];
for(j=i-1;j>=0&&a[j]>k;j--){
a[j+1]=a[j];
}
}
a[j+1]=k;
}
for(i=0;i<n;i++){
printf("%d",a[i]);
}
}
在这里,我直接将其做成了三个函数,要用的话直接调用即可。
求和
#include<stdio.h>
int main()
{
int n;
int sum=0;
scanf("%d",&n);
for(int i = 0;i<n;i++)
scanf("%d",&a[i]);
for(int i = 0;i<n;i++)
{
sum += a[i];
}
printf("%d",sum);
return 0;
}
大整数求和
#include<stdio.h>
#include<string.h>
int main()
{
int n,i;
scanf("%d",&n);//在这里,n为你输入数字的最大位数
char a[n]={0};
char b[n]={0};
char c[100];
scanf("%s",a);//输入数字
scanf("%s",b);//输入数字
for(i=0;i<strlen(a);i++){
a[i]=a[i]-'0';
b[i]=b[i]-'0';
}
for(i=strlen(a)-1;i>-1;i--){
c[i]=a[i]+b[i];
}
for(i=strlen(a)-1;i>-1;i--){
if(c[i]>9&&i!=0){
c[i]%=10;
c[i-1]+=1;
}
}
for(i=0;i<strlen(a);i++){
printf("%d",c[i]);
}
return 0;
}
前面的n表示输入整数的最大位数
由于这里涉及到了字符串,数组和stdlib.h函数库,没学到的了解一下就行了。