c语言循环练习平时训练


有声明int i=0,s=0;执行下列程序段后s的值为
while(i++ < 6) s += i;
A、15
B、16
C、21
D、22

分步:
i = 0, i < 6 , i++ ==> i = 1 , s+=i ==> s += 1 = 1
i = 1, i < 6, i++ ==> i = 2, s+=i ==> s += 2 = 3
i = 2, i < 6, i++ ==> i = 3. s+=i ==> s += 3 = 6
i = 3, i < 6, i++ ==> i = 4, s+=i ==> s+= 4 = 10
i = 4, i < 6, i++ ==> i = 5, s+=i ==> s+= 5 = 15
i = 5, i < 6, i++ ==> i = 6, s+=i ==> s+= 6 = 21
i = 6, i < 6 条件不成立退出循环, i++ ==> i = 7

1.s+=i,i也在自增,所以s是一个等差数列求和
2.i是5时,依然满足条件,会进入循环,进入循环后i的值变为6
所以最终s的值是1+2+3+4+5+6=21

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7547552
  • 这篇博客也不错, 你可以看下c语言循环求数组平均值
  • 同时,你还可以查看手册:c语言-字符串字面量 中的内容
  • 除此之外, 这篇博客: c语言获取表格数据中的 步骤 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.查阅发现,通过处理csv(comma separated-values)文件,在python学习时接触到,为逗号分隔的文本格式,可以被和文本文件相同方式处理。
    2.将表格另存为csv格式。
    打开excel表格,点击另存为

    3.读入文件

    FILE* fp;
    fp = fopen("oneturntask.csv", "r");

    4.目标为写一个读文件的模板,可以通过修改简单的参数,灵活读入不同文件的数据,方便多次使用

    • 读入表头信息
    #define HEADERMAXLEN 100 //表头最大字符总长
    #define TITLEMAXLEN 100 //单个标题最大字符长度
    #define TITLEMAXNUM 20 //标题最大数量
    
    int colNum=0;//记录表格数据总列数
    int lineCodeCol, leaveTimeCol, directionCol, actualTimeCol;//记录需要的数据所在列数
    char csvHeader[HEADERMAXLEN];//存储表头信息
    char title[TITLEMAXNUM][TITLEMAXLEN];//存储各个标题
    int lineData[TITLEMAXNUM];//读入数据
    int readAll = 0;//判断是否到文件结尾
    
    char* pHeader;
    char* pTitle;
    
    fscanf(fp, "%s", &csvHeader);//读入表头信息
    //cout << "表头全部信息如下:" << csvHeader << endl;
    
    for (pHeader = csvHeader; *pHeader != '\0'; pHeader++)
     { 
      	colNum++;//空出0号存储位置,与实际列数相一致
      	pTitle = title[colNum];
      	while (*pHeader != ',' && *pHeader != '\0')
      	{   
       		*pTitle++ = *pHeader++; 
      	}
      	*pTitle = '\0';  
      	//  cout << "第"<<colNum<<"列:"<<title[colNum] << endl;
      	if (*pHeader == '\0')//读到表头末尾退出循环
       		break;  
     }
     //cout << "共有数据:" << colNum << "列" << endl;
    • 定位所需数据
    #define LINECODE "LineCode"
    #define LEAVETIME "LeaveTime0"
    #define ACTUALTIME  "ActualTime"
    #define DIRECTION "WorkDirection"//表头关键字预定义
    for (int i = 1; i <= colNum; i++)
    { 
      if (strcmp(title[i], LINECODE) == 0)
      {
       	lineCodeCol = i;
       	//cout << "所需" << LINECODE << "位于第" << i << "列" << endl;
      }
       
      if (strcmp(title[i], LEAVETIME) == 0)
      {
       	leaveTimeCol = i;
       	//cout << "所需" << LEAVETIME << "位于第" << i << "列" << endl;
      }
       
      if (strcmp(title[i], DIRECTION) == 0)
      {
       	directionCol = i;
       	//cout << "所需" << DIRECTION << "位于第" << i << "列" << endl;
      }
       
      if (strcmp(title[i], ACTUALTIME) == 0)
      {
       	actualTimeCol = i;
       	//cout << "所需" << ACTUALTIME << "位于第" << i << "列" << endl;
      }   
    
    • 读入所需数据
    while (readAll==0)
    {
    	for (int i = 1; i <= colNum; i++)
      	{
       		if (fscanf(fp, "%d", &lineData[i]) == EOF)//判断读到文件末尾
       		{
       			 readAll = 1;
        			 break;
      		}
        
       		fgetc(fp);
     	}
     	//打印文件信息
     	/*
     	if (readAll == 0)
      	{
      		for (int i = 1; i <= colNum; i++)
       		{
        			if (i == lineCodeCol)
         				cout << "lineCode:" << lineData[i] << " ";
       			if (i == leaveTimeCol)
         				cout << "leaveTime:" << lineData[i] << " ";
         			if (i == actualTimeCol)
         				cout << "actualTime:" << lineData[i] << " ";
        			if (i == directionCol)
         				cout << "direction:" << lineData[i] << " ";
       		}
       	}
       	*/
    }

    5.能够对文件信息在读取后进行处理,关闭文件

    fclose(fp);
  • 您还可以看一下 包东华老师的C语言俄罗斯方块课程中的 变形小节, 巩固相关知识点